实体框架CTP4和复合键

时间:2010-07-21 12:39:08

标签: c# entity-framework-4 composite-key

我正在使用EntityFramework CTP4并决定将其应用于我当前的一个项目。该应用程序使用SQLServer数据库,并且有一个表具有复合键。比如,表“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次的第一个记录,然后第二个重复18次(对于记录,我的表有36个记录)。

我怀疑问题出在复合键上,因为没有其他实体显示此问题。

感谢任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:6)

我还没有使用我当前的数据库&amp; CTP4,但在CTP3中,您将创建一个这样的复合键:

HasKey(m => new { m.Key1, m.Key2 });