为什么modelBuilder.Entity <t>()。HasKey()工作而HasKey()不工作?</t>

时间:2014-12-08 19:51:35

标签: c# entity-framework ef-code-first

我想使用流畅的API配置我的EF Code First类。我试过这个:

public class CenterMapping : ComplexTypeConfiguration<Center>
{
    public CenterMapping()
    {
        HasKey(x => x.ID);
    }
}

并且VS告诉我HasKey不存在。但是当我尝试这个时:

public class YarigaranDbContext : DbContext
{
    public DbSet<Center> Centers { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new CenterMapping());

        modelBuilder.Entity<Center>().HasKey(t => t.ID);

        base.OnModelCreating(modelBuilder);
    }
}

它工作正常。我使用的是EF 6.1.1和.Net 4.5。我已经尝试过VS 2015预览版和VS 2013社区版(以防它出现预览问题)

1 个答案:

答案 0 :(得分:1)

根据msdn:ComplexTypeConfiguration没有HasKey方法。使用EntityTypeConfiguration

public class CenterMapping : EntityTypeConfiguration<Center>
{
    public CenterMapping()
    {
        HasKey(x => x.ID);
    }
}