DbContext не может инициализировать первую модель базы данных - PullRequest
1 голос
/ 26 февраля 2011

Обновление : Оказывается, у меня было (скрыто в моих объектах POCO) свойство с абстрактным типом.Удаление этого свойства решает проблему.


Я пытаюсь создать сценарий, основанный на модели с сущностью 4, ctp 5, создать базу данных (в настоящее время используется серверная часть SQL Server CE4, но я могу воспроизвести ее набэкэнд Sql Server 2008) из моей модели.

Я думаю, что мог как-то испортить определение моей модели, но я не могу понять, как и сообщение об ошибке не оставляет меня никого мудрее.

Мой объект DbContext настроен так:

public class MyDb : DbContext
{
    public MyDb()
    {
        // Apply forced recreation tactics for now
        DbDatabase.SetInitializer<MyDb>(new CreateDatabaseIfNotExists<MyDb>());
    }

    public DbSet<UserAccount> UserAccounts { get; set; }
    public DbSet<OtherData> OtherDatas { get; set; }
    // etc
}

Когда я запрашиваю его (следующим образом):

        MyDb db = new MyDb();
        var matchingAccount = from user in db.UserAccounts where user.Email == email select user;
        return matchingAccount.SingleOrDefault();

Я получаю следующую ошибку:

[ArgumentNullException: значение не может быть нулевым.Имя параметра: entitySet]
System.Lazy 1.get_Value() +9591079<br> System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +371 System.Data.Entity.Internal.InternalContext.Initialize() +16 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +15<br> System.Data.Entity.Internal.Linq.InternalSet 1.Initialize () +62 System.Data.Entity.Internal.Linq.InternalSet 1.get_Provider() +15 System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider () +13 System.Linq.Queryable.Where (предикат IQueryable 1 source, Expression 1) + 63

Однако при первом построении возникает конкретная ошибка:

[ArgumentNullException:Значение не может быть нулевым.Имя параметра: entitySet]
System.Data.Entity..Mapping.DbDatabaseMappingExtensions.GetEntitySetMapping (DbDatabaseMapping databaseMapping, EdmEntitySet entitySet) + 147
System.Data.Entity.ModelConfiguration.Edm.Services.EntityTypeMappingGenerator.ModelConfiguration.Edm.Entity.ModelConfiguration.Edm.EdmModelExtensions.GenerateDatabaseMapping (модель EdmModel, поставщик DbProviderManifestManifest) + 233
System.Data.Entity.ModelConfiguration.CreateModel () + 61

1 Ответ

0 голосов
/ 26 февраля 2011

 // Apply forced recreation tactics for now
        DbDatabase.SetInitializer<BudgetnetDatabase>(new CreateDatabaseIfNotExists<BudgetnetDatabase>());

следует применять только один раз в вашем проекте.я предлагаю вам убрать этот код из класса.

есть ли еще что-то в вашем контексте БД?

любая конфигурация?

возможно ли увидеть BudgetnetDatabase?

нам также нужно будет увидеть объекты poco.

база данных вообще создается?

...