ASP.NET MVC 3, Code First и SQL Express или как настроить подключение сайта

ru-RU | создано: 26.05.2011 | опубликовано: 26.05.2011 | обновлено: 01.01.2018 | просмотров за всё время: 6369

В этой статье я хочу показать “что” и “как” надо сделать, чтобы Ваше приложение на ASP.NET MVC 3 смогло использовать SQL EXPRESS сервер вместо SQL Compact Edition. Да, у меня получилось настроить такой принцип работы, но не сразу. А так же поделиться полезными для изучения ссылками.

Вступление

Статья из цикла "Как я...". Основана на личном опыте.

Про MVC3

После выхода в свет ASP.NET MVC3 (что произошло совершенно недавно в январе этого года) всё как-то не хватало времени заняться и посмотреть что там такого “вкусного” появилось в новой версии. А тут наткнулся на одну статью, в которой описывается принцип разработки “Code First”. Но в этой статье описывается использование EF4 Code-First  (Microsoft ADO.NET Entity Framework Feature CTP4), то есть, версия которая, ну совсем “молодая”. Не хотелось бы использовать ее.

Где почитать про MVC3?

С выходом MVC3 стали появляться статьи с примерами по построению сайта на этой базе с использованием Entity Framework 4.1. Но вот незадача, особенности подключения к базе (которая должна генерироваться “на лету”) нигде толком не удавалось найти. Даже на официальном сайте в учебном пособии (tutorial) использует SQL Compact Edition 4.0. Именно так и написано в заголовке учебного материала в списке требований, и тут же можно найти и ссылки на скачивание.

Процесс подключения

Как Вы уже наверное знаете, code first означает лишь то, что оно означает (простите за каламбур) в переводе с английского “сначала код”. Если кратко, то сначала вы описываете (кодируете) свои классы используемые в приложении, со всеми связями и зависимостями в коде, а потом, по мановению волшебной палочки, ваши классы превращаются в хорошо структурированную и оптимизированную базу данных для хранения тех самых данных от ваших классов. Звучит красиво и чертовски удобно (проверено!).

Итак, опишу сам процесс. Сначала я озадачился вопросом “а можно ли использовать Code First без SQL Compact Edition?” Во всех найденных статьях были примеры с SQL Compact Edition, но оказалось, что можно:

Это из примера на официальном сайте.You don't have to create a connection string. If you don't create one, the Entity Framework will automatically create a SQL Server Express database for you. In this tutorial, however, you'll work with SQL Server Compact, so you need to create a connection string to specify that.

Ну, а раз можно, решил попробовать “прикрутить” Code First к SQL Express… Оп-па! А не тут-то было! Не получилось, упёрлась, и ни в какую. Убил не мало времени и решил всё-таки осилить пример с использованием SQL SE. Установил Microsoft SQL Server Compact 4.0. Настроил строку подключения:

<add name="SchoolContext" 
     connectionString="Data Source=|DataDirectory|School.sdf" 
     providerName="System.Data.SqlServerCe.4.0"/>

Ура!!! Заработало! Созданные в приложение модели при запуске (компиляции) приложения тут же обновляли таблицы в базе (school.sdf).

Снова решил попробовать подключиться на SQL Express…

<add name="MusicStoreEntities" 
     connectionString="Data Source=SERVER;Initial Catalog=School;Integrated Security=True;Pooling=False" 
     providerName="System.Data.SqlClient"/>

И, о, чудо! Заработало тоже! Задался мыслью, может быть это связано с тем, что SQL Compact Edition не был установлен? Проверка на другой машине, на которой не был установлен MS SQL Compact Edition, увенчалась успехом. Однако, потребовалась установить ASP.NET MVC 3 Tools Update и больше ничего. Проект откомпилировался и запустился. База успешно создалась и на MS SQL Express Edition и на MS SQL Standart Edition,  и, соответственно на MS SQL Compact Edition.

Выводы

Пишите правильно! Строка подключения имеет очень важное значение. :)

Ссылки

В статье я специально собрал ссылки, которые имеют отношение именно о MVC3, потому что засилье статей про другие версии (в том числе и Preview) очень много.  Вот на здоровье: