1

更新: 抽象型のプロパティが (私の 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: 値を null にすることはできません。パラメータ名:entitySet]
System.Lazy 1.Initialize() +62 System.Data.Entity.Internal.Linq.InternalSet 1.System.Linq.IQueryable.get_Provider() +13 System.Linq.Queryable.Where(IQueryable 1述語) +631.get_Value() +9591079
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +371 System.Data.Entity.Internal.InternalContext.Initialize() +16 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +15
System.Data.Entity.Internal.Linq.InternalSet
1.get_Provider() +15 System.Data.Entity.Infrastructure.DbQuery1 source, Expression

ただし、初めてビルドすると、これは特定のエラーです。

[ArgumentNullException: 値を null にすることはできません。パラメータ名: entitySet]
System.Data.Entity.ModelConfiguration.Utilities.RuntimeFailureMethods.ReportFailure(ContractFailureKind contractFailureKind, String userMessage, String conditionText, Exception innerException) +970860
System.Data.Entity.ModelConfiguration.Edm.Db.Mapping.DbDatabaseMappingExtensions.GetEntitySetMapping (DbDatabaseMapping databaseMapping、EdmEntitySet entitySet) +147
System.Data.Entity.ModelConfiguration.Edm.Services.EntityTypeMappingGenerator.Generate(EdmEntityType entityType、DbDatabaseMapping databaseMapping) +206
System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEntityTypes(EdmModelモデル、DbDatabaseMapping データベース マッピング) +253
System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.Generate(EdmModel モデル) +168
System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.GenerateDatabaseMapping(EdmModel モデル、DbProviderManifest providerManifest) +233
System.Data.Entity.ModelConfiguration .ModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo, Boolean validateModel) +280 System.Data.Entity.ModelConfiguration.ModelBuilder.Build(DbConnection providerConnection) +173
System.Data.Entity.Internal.LazyInternalContext.CreateModel() +61

4

1 に答える 1

-1

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

プロジェクトで一度だけ適用する必要があります。このコードをクラスの外に移動することをお勧めします。

あなたのデータベースコンテキストにはもっとありますか?

任意の構成?

BudgetnetDatabase を見ることは可能ですか?

poco オブジェクトも確認する必要があります。

データベースはまったく作成されていますか?

于 2011-02-26T13:40:09.910 に答える