У меня сегодня немного кошмарный день. Я успешно работал над разработкой кода сначала локально, и все шло очень хорошо, моя БД была удалена и воссоздана по мере необходимости при изменении модели. Однако при попытке «обновить» проект до промежуточного сервера sqlserver2008 на mydiscountasp.net мои проблемы начались всерьез. Поскольку базы данных общего хостинга не могут быть удалены / воссозданы пользователем, я взял локальную резервную копию и восстановил ее на сервере. На шаг ближе ... Я вижу базу данных при входе на сервер через sqlserver mgt studio, и все выглядит нормально. Тем не менее, я не могу понять, как подключиться к базе данных через web.config. Я начал с использования скромного ado.net sysntax для строки подключения в соответствии с:
<add name="MyWebSiteContext"
connectionString="Server=esql2k123.discountasp.net;
Database=SQL2008R2_123456_test;uid=SQL2008R2_123456_test_user;pwd=mypassword;"
providerName="System.Data.SqlClient"/>
это не сработало и выдало ошибку о том, что ключевое слово "сервер" не было распознано. после долгих поисков оказалось, что проблема вполне может быть связана с частью providerName="System.Data.SqlClient"
.
Итак, изменив это на providerName="System.Data.EntityClient"
, я был полон небольшой надежды. Увы, та же история.
Короче говоря, (очень) длинная история, я пробовал много перестановок (мутации - это оперативное слово !! :)), но, похоже, не могу найти правильное синтаксическое требование для требования строки соединения ef-code-first
Кто-нибудь недавно проходил подобный обруч и нашел рабочее решение?
пальцы рук и ног xx'd ..
[ОБНОВЛЕНИЕ] Мне удалось заставить мою строку подключения работать (почти), отформатировав ее следующим образом:
<add name="GBCWebSiteContext"
connectionString="Data Source=esql2k123.discountasp.net;Initial Catalog=SQL2008R2_123456_test;Persist Security Info=True;MultipleActiveResultSets=True;User ID=SQL2008R2_123456_test_user;Password=mypass" providerName="System.Data.SqlClient"/>
Теперь я могу останавливать и отлаживать действие контроллера, когда оно выполняет выбор linq. ОДНАКО, при попытке вернуть строки, я теперь получаю исключение, которое гласит: Триггер возвратил набор результатов, а параметр сервера «Запретить результаты от триггеров» равен true
Итак, каков мой последний фрагмент головоломки здесь, является ли дополнительная опция в строке подключения для устранения этой проблемы ??
[ОБНОВЛЕНИЕ 2]
Аллиллула - я сломал орех. Как я напомнил строку global.asax:
Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MyWebSiteContext>());
Я не понял, что мне нужно включить нулевую ссылку на Database.SetInitializer()
.
и вот, моя проблема была решена следующим образом:
Database.SetInitializer<MyWebSiteContext>(null);
спасибо всем за различные предложения, они помогли мне сосредоточиться на проблеме. Так счастлив:)