EF 4.1 Code First с существующей базой данных

У меня есть существующая БД, и я сначала использовал код EF 4.1 для сопоставления своих объектов POCO с таблицами. Но я получаю эту ошибку:

Невозможно проверить совместимость модели ошибок EF 4.1, так как тип EdmMetadata

Несмотря на то, что я добавил метод OnModelCreating, он все равно выдает ту же ошибку:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{     
    modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
}

Мои таблицы POCO и DB абсолютно идентичны.


person Shuaib    schedule 09.05.2011    source источник


Ответы (1)


Похоже, проблема в том, что база данных существует, но вы пытаетесь создать ее с помощью EF CodeFirst. Если вы удалите базу данных, это, скорее всего, запустится и создаст базу данных и таблицу. Вот ссылка на человека, у которого была эта проблема, и вот как они ее решили:

http://forums.asp.net/t/1673379.aspx/1?Unable+to+generate+Edm+Metadata+table+at+runtime+from+EF+code+first+model< /а>

Если вы хотите использовать существующую базу данных (если в ней есть другие данные), я думаю, вам нужно изменить то, что ожидает Code First. Вот статья SO о том, как это сделать:

Entity Framework CTP 4 — Инициализатор пользовательской базы данных Code First

Убедитесь, что вы прочитали все сообщения, потому что даже те, которые не приняты в качестве ответа, содержат полезную информацию о том, что вы можете сделать.

person IAmTimCorey    schedule 09.05.2011
comment
Спасибо BiggsTRC, удаление базы данных, похоже, сработало. Я создал БД с помощью EF, а затем переместил данные из существующих таблиц базы данных. - person Shuaib; 09.05.2011
comment
Я нашел это сообщение в блоге, которое фактически решило мою проблему. Ключ заключался в инициализации контекста: Database.SetInitializer‹DatabaseContext›(null); agilenet.wordpress .com/2011/04/11/ - person Shuaib; 10.05.2011
comment
@Shuaib - Отлично! Рад, что у вас есть решение. Спасибо за решение. - person IAmTimCorey; 10.05.2011