Сначала модель с DbContext, не в состоянии инициализировать новую базу данных - PullRequest
23 голосов
/ 09 мая 2011

Я сдаюсь. Я нашел это: http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx И подумал, что это круто. Поэтому я быстро изменил дизайн своей модели, чтобы использовать в своих интересах лучшее из двух миров.

Но теперь моей модели не удается создать новую базу данных (или добавить таблицы в существующую). Я получаю эту ошибку:

Код, сгенерированный с использованием шаблонов T4 для разработки Database First и Model First, может работать некорректно, если используется в режиме Code First. Для продолжения использования Database First или Model First убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, которые были сгенерированы из Database First или Model First, с Code First добавьте любую дополнительную конфигурацию, используя атрибуты или API DbModelBuilder, а затем удалите код, который выдает это исключение.

В

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

И это моя строка подключения:

    <add name="ForumContextContainer"
 providerName="System.Data.SqlClient"
 connectionString="Data Source=.\SQLExpress; Initial Catalog=iForum; Integrated Security=True"/>

Примечание. Позже я добавил Начальный каталог, чтобы попытаться, если он будет работать, но он был точно таким же.

Ответы [ 4 ]

32 голосов
/ 10 мая 2011

Это неверная строка подключения. Как только вы используете модель сначала / база данных сначала (EDMX), вы должны использовать Строка подключения к объекту со ссылкой на файлы метаданных .ssdl, .msl и .csdl. Также помните, что при создании модели из EDMX вы должны создавать свою базу данных во время разработки = вы должны сгенерировать сценарий SQL и выполнить его для создания базы данных.

2 голосов
/ 04 января 2013

Полагаю, эта ошибка обычно появляется, когда кто-то сначала добавляет EDMX / db в библиотеку классов в решении.Если вы сделаете это, убедитесь, что строка подключения, добавленная в файл App.config в проекте библиотеки классов, доступна в файле web.config или в файле конфигурации проекта exe (поэтому просто скопируйте / вставьте ее туда).

0 голосов
/ 02 июля 2015

Удалите или прокомментируйте это:

//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
//    throw new UnintentionalCodeFirstException();
//}

И измените строку подключения на действительную.

0 голосов
/ 15 февраля 2015
Add this connection string to web config and make changes:

<add name="Entities" 
connectionString="
metadata=res://*/EFmodel.csdl|res://*/EFmodel.ssdl|res://*/EFmodel.msl;
provider=System.Data.SqlClient;provider 
connection string=&quot;
data source=SAI-PC;
initial catalog=OrderDB;
user id=sa;
password=Pass$123;
MultipleActiveResultSets=True;
App=EntityFramework&quot;" 
providerName="System.Data.EntityClient" />

EFmodel is my .edmx file name.

OrderDB is database name.
...