Mike Hankey Ответов: 0

Unintentionalcodefirstexception при использовании строки SQL connectioin


Используя EntityFramework 6.2, MVC5 и методологию Data first, т. е. я создал базу данных вручную очень давно.
Работал много месяцев, но сегодня я обновился с SQL 2008 developer verson до SQL 2012, Да, я мазохист.

Я начал получать эту ошибку в последнее время;
System.Data.Entity.Infrastructure.UnintentionalCodeFirstException: 'The context is being used in Code First mode with code that was generated from an EDMX file for either Database First or Model First development. This will not work correctly. To fix this problem do not remove the line of code that throws this exception. If you wish to use Database First or Model First, then make sure that the Entity Framework connection string is included in the app.config or web.config of the start-up project. If you are creating your own DbConnection, then make sure that it is an EntityConnection and not some other type of DbConnection, and that you pass it to one of the base DbContext constructors that take a DbConnection. To learn more about Code First, Database First, and Model First see the Entity Framework documentation here: http://go.microsoft.com/fwlink/?LinkId=394715'

Все прекрасно работает на моей машине разработки, но когда я публикую его, я получаю ошибку сервера 500, я предполагаю, что из-за метаданных в строке подключения;
&ЛТ;добавить имя="объект sqlconnection" свойства connectionString="метаданные=РЭС://*/моделей.DataModel.язык csdl|Рес://*/моделей.DataModel.ssdl|res://*/модели.DataModel.МСЛ;поставщик=система.Данных.В sqlclient;поставщика строка подключения="source=s10.winhost.com данных;начальный каталог=DB_110255_guardian;идентификатор пользователя=хххххх;пароль=ХХХХХ;значение multipleactiveresultsets=true;в приложение=и EntityFramework"" имя_поставщика="системы.Данных.Entityclient создан" /&ГТ;

То, что я хочу сделать, это вернуться к использованию ADO.NET строки подключения и для того, чтобы иметь возможность создать файл edmx без того, чтобы система думала, что это кодовая первая БД.
Толчок в нужном направлении был бы очень кстати. Проблема в том, что я просто не знаю, с чем столкнусь.

Что я уже пробовал:

Я не знаю, к чему здесь обратиться.
Сначала я попытался отключить код - безуспешно
--- База данных.SetInitializer<sqlcontext>(null);
--- Удалена таблица __MigrationHistory
--- uSoft рекомендовал создать класс конфигурации, попробовал его без работы!
--- Попробовал несколько версий кода в файле web.config в разделе entity framework, но безуспешно.
--- Я генерировал файлы edmx много раз

Richard Deeming

Это исключение обычно возникает, когда ваша строка подключения Не включите в него "метаданные". Вы уверены, что не изменили строку подключения на сервере?

В последних версиях EF вы можете сначала использовать код с существующей базой данных:
Код Entity Framework сначала в существующую базу данных[^]

Вы также можете перейти от базы данных сначала к коду сначала:
Миграция проекта из базы данных сначала в код сначала[^]

Mike Hankey

Ричард,
Спасибо за ответ, я обычно так расстраиваюсь и в этом случае спешу, что задаю глупый вопрос из чистого отчаяния.
После 2 дней исследований и проб и ошибок я обнаружил, что;
- Да, я всегда использовал мету со своей строкой подключения
- У меня всегда были проблемы с авторизацией, оказывается, я использовал БД на сервере, но авторизация была сделана БД, созданной локально. Сводит с ума, если не сказать больше. Поэтому я пошел к поставщикам пользовательских разрешений и ролей и покончил с ASP-вещами.
- Я действительно попробовал кодовый первый подход, как многие предлагали, но безрезультатно.

Самое странное, что сегодня утром я рассказал своей подруге о своей проблеме, и она ответила мне "...вы, должно быть, исправили свою проблему, потому что она поднялась..."
Попробовал его на FF Developer, как я делал, без любви, пошел в chrome и IE, и все было готово. Попробовал очистить кэш, то же самое, так что я не знаю, что, черт возьми, думать об этом.

В любом случае я собираюсь создать еще одно веб-приложение и перенести все на него, просто чтобы убедиться, что нет никаких остатков, берущих его по кусочку за раз.

Проблема спешки у меня есть в том, что у меня есть 1 неделя, чтобы закончить основную часть, потому что после этого я переезжаю в другой парк (я волонтер в государственных парках штата Флорида), а в парке, куда я переезжаю, очень дерьмовый интернет.

В любом случае спасибо за Ваш вклад, ценю его!

0 Ответов