Entity Framework: установка правильной строки подключения к SQL Server Compact в ASP.NET MVC 4

Я хочу использовать встроенную версию SQL Server Compact в моем проекте asp.net mvc 4. Я пытаюсь подойти, но у меня проблемы с любым подходом:

Первая попытка

Я создал новое подключение к данным из визуальной студии и из обозревателя серверов типа Microsoft SQL Server Compact 3.5, и я сохраняю файл .sdf в моем проекте asp.net mvc 4 в папке \App_Data (я добавляю этот файл .sdf в эту папку). Я предполагаю, что при этом я создаю и встраиваю базу данных SQL Server Compact для своего веб-приложения, я прав?

Наконец, я создаю следующую строку подключения в web.config:

<add name="DefaultConnection"
     providerName="System.Data.SqlServerCe.3.5"
     connectionString="Data Source=|DataDirectory|\App_Data\MyDatabaseSQLCe.sdf" />

Я запускаю свое веб-приложение, но возникает ошибка, база данных, похоже, не найдена, ну, ошибка говорит что-то вроде:

SQL Server Compact не предназначен для разработки asp.net.

Я не уверен, что описанная выше строка подключения верна.

Вторая попытка

Также я скачал SQL Server Compact 4.0 отсюда: http://www.microsoft.com/en-us/sqlserver/editions/2012-editions/compact.aspx, и я установил. После установки. Если я перейду к созданию подключения к данным, как описано выше, SQL Server Compact 4.0 из Visual Studio не появится. Я хотел бы использовать встроенный SQL Server Compact в своем проекте, но я совершенно потерян.

Вывод: моя цель - использовать версию SQL Server Compact, встроенную в мое веб-приложение asp.net mvc 4, поместить этот файл .sdf в мою папку \App_Data и заставить его работать с правильным строковым соединением в web.config.


person Ralph    schedule 17.09.2013    source источник
comment
|DataDirectory|\App_Data дает App_Data\App_Data, если я не ошибаюсь. Попробуйте Data Source=|DataDirectory|\MyDatabaseSQLCe.sdf. Вы можете проверить это, разместив AppDomain.CurrentDomain.GetData("DataDirectory").ToString() на своей веб-странице.   -  person    schedule 18.09.2013
comment
Вы правы, это была одна ошибка при первом подходе. Вторая ошибка в первом подходе, касающаяся ошибки сообщения, я погуглил и обнаружил, что компактный сервер sql не предназначен для использования в ASP.NET из-за его нескольких ограничений. относящийся к обычным выпускам SQL Server, и чтобы избежать этого сообщения, я должен поместить в метод Application_Start в global.asax.cs следующую строку: AppDomain.CurrentDomain.SetData(SQLServerCompactEditionUnderWebHosting, true), затем ошибка исчезнет, ​​и приложение будет работать нормально, таблицы будут созданы в файле базы данных и т. д.   -  person Ralph    schedule 18.09.2013
comment
Теперь я хотел бы знать, как решить 2 подхода, используя sql server compact 4.0. Я установил его, но при попытке создать новое подключение к данным из проводника сервера параметр SQL Server Compact 4.0 не отображается в Visual Studio, почему?   -  person Ralph    schedule 18.09.2013


Ответы (1)


|DataDirectory|\App_Data дает App_Data\App_Data, если я не ошибаюсь. Попробуйте Data Source=|DataDirectory|\MyDatabaseSQLCe.sdf.

Вы можете проверить это, разместив AppDomain.CurrentDomain.GetData("DataDirectory").ToString() на своей веб-странице.

При работе с Sql Server Compact вам следует взять набор инструментов для Visual Studio.

http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1

person Community    schedule 17.09.2013
comment
Я установил компактный набор инструментов sql server по предоставленной вами ссылке, используя пакеты расширений в Visual Studio, но при создании подключения к данным sql server compact 4.0 не появляется, только 3.5. У меня есть Visual Studio 2010 Ultimate SP1 и Net Framework до версии 4.0. Есть идеи? может быть, он не поддерживается в веб-приложениях asp.net mvc 4? - person Ralph; 18.09.2013
comment
Я решил: вы не можете добавить подключение к sql server compact 4.0 из проводника сервера и щелкнуть правой кнопкой мыши узел подключения к данным. Вместо этого вам нужно нажать кнопку SQL Server Compact Toolbox в верхней части обозревателя серверов, где появляются некоторые кнопки. Затем появится окно (компактная панель инструментов SQL Server) и щелкните правой кнопкой мыши узел компактных подключений к данным SQL Server и в меню выберите параметр Добавить компактное соединение SQL Server 4.0, также вы можете выбрать из него 3.5. Сначала это немного сбивает с толку, пока вы не найдете компактный набор инструментов sql server. Большое спасибо. - person Ralph; 18.09.2013