EF POCO - 无法推断实体类型的密钥?

时间:2010-10-29 04:40:46

标签: c# .net entity-framework entity-framework-4

我有一个POCO类,映射到一个基本上包含三个主键的表:

public class ContactProjectSite
    {
        public int ContactID { get; set; }
        public int ProjectID { get; set; }
        public int SiteID { get; set; }

        public virtual Contact Contact { get; set; }
        public virtual Project Project { get; set; }
        public virtual Site Site { get; set; }
    }

这是继承DbContext类的类,重写OnModelCreating方法:

public class TLI : DbContext
{
    public DbSet<ContactProjectSite> ContactsProjectSite { get; set; }
    protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ContactProjectSite>().MapSingleType(cps => new
        {
            cpcid = cps.ContactID,
            cppid = cps.ProjectID,
            cpsid = cps.SiteID
        }).ToTable(new StoreTableName("contacts_ps", "dbo"));
    }
}

但是,运行此时,我收到此错误:* 无法推断实体类型“Library.Models.ContactProjectSite”的键。 * 知道为什么吗?

感谢。

1 个答案:

答案 0 :(得分:1)

当EF无法从名称/类型中找出时,您可以应用[Key]属性来指示哪个属性是主键。我认为你可以多次应用它来创建一个复合键。