4

私はEntityFrameworkCTP4で遊んでいて、それを現在のプロジェクトの1つに適用することにしました。アプリケーションはSQLServerデータベースを使用し、複合キーを持つテーブルが1つあります。たとえば、テーブル「MyEntity」には、外部キー(個別)と複合主キーの両方として「Key1」と「Key2」があります。

EntityConfigurationから派生した構成クラスを作成しました:

class MyEntityConfiguration : EntityConfiguration<MyEntity>
{
    public MyEntityConfiguration()
    {
        HasKey(m => m.Key1);
        HasKey(m => m.Key2);
    }
}

次に、私のDataContext(DbContextから派生)で:

    public DbSet<MyEntity> MyEntities { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new MyEntityConfiguration());
    }

問題は、「MyEntities」にすべてのレコードを照会すると、次のようになることです。

var entities = from e in MyModel.Instance.MyEntities
               select e;

最初のレコードが18回繰り返され、次に2番目のレコードが18回繰り返されるという非常に奇妙な結果が得られます(レコードの場合、私のテーブルには36のレコードがあります)。

他のエンティティがこの問題を示していないため、問題は複合キーにあると思われます。

助けていただければ幸いです、ありがとう:)

4

1 に答える 1

6

現在のデータベースとCTP4でテストしていませんが、CTP3では次のような複合キーを作成します。

HasKey(m => new { m.Key1, m.Key2 });
于 2010-07-21T13:03:34.217 に答える