ASP.NET MVC 3, Code First и SQL Express или как настроить подключение сайта
Сайтостроение | создано: 26.05.2011 | опубликовано: 26.05.2011 | обновлено: 13.01.2024 | просмотров: 7776
В этой статье я хочу показать “что” и “как” надо сделать, чтобы Ваше приложение на 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) очень много. Вот на здоровье:
- Code-First Development with Entity Framework 4
- Building an MVC 3 App with Code First and Entity Framework 4.1
- Intro to ASP.NET MVC 3
- Microsoft SQL Server Compact 4.0
- ASP.NET MVC 3 Tools Update
- http://mvcmusicstore.codeplex.com/ - демонстрационный проект с подробным описанием (eng).