Entity Framework 4 и DB2: ошибка генерации базы данных - PullRequest
0 голосов
/ 29 марта 2011

Мы используем Entity Framework 4 RC в Visual Studio 2010 с DB2 версии 9.7.3.4.У меня также есть надстройки VS и я вижу базу данных DB2 в обозревателе серверов.Я создал очень простой консольный проект VS, и он отлично работает с SQL Server, поэтому я знаю, что он действителен.У меня есть ссылки на «IBM.Data.DB2.9.7.3» и «IBM.Data.DB2.Entity» в моем проекте.

В app.config моя строка подключения:

<add name="ProductContext"  
     providerName="IBM.Data.DB2"  
     connectionString="Database=DB2TEST;User ID=XXXX;PWD=XXXX;Server=XXXX;Persist Security Info=True;"/>

Первый оператор в моем коде - это инициализатор базы данных:

DbDatabase.SetInitializer<ProductContext>(new DropCreateDatabaseIfModelChanges<ProductContext>());

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

Невозможно проверить совместимость модели, поскольку база данных не содержит метаданных модели.

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

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Попробуйте удалить IncludeMetadataConvention следующим образом: modelBuilder.Conventions.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
Чтобы избежать проблемы "dbo", просто сопоставьте все свои сущности, используя атрибуты DataAnnotation или отображение Fluent:

[Table("Product", SchemaName = "MySchema")]
public class Category { //DataAnnotoaion approach

modelBuilder.Entity<Category>().ToTable("Categories", "MySchema"); //Fluent approach
0 голосов
/ 29 марта 2011

Сначала я бы попытался унаследовать от CreateDatabaseIfNotExists, что добавит таблицу EdmMetadata в схему.Я полагаю, что ошибка в том, что EF говорит, что не может найти эту таблицу.

Итак

DbDatabase.SetInitializer<ProductContext>(new CreateDatabaseIfNotExists<ProductContext>());

Запустите ее один раз, затем измените на DropCreateDatabaseIfModelChanges, как только таблица EdmMetadata существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...