所以我有一个具有复合主键的类:
public class Field
{
[Key, Column(Order=0)]
[ForeignKey("Store")]
public int StoreID { get; set; }
public Store Store { get; set; }
[Key, Column(Order = 1)]
public int ID { get; set; }
public List<Template> Templates { get; set; }
}
......和另一个引用它的人
public class Mapping
{
public Field Field { get; set; }
[ForeignKey("Template")]
public int TemplateID { get; set; }
public Template Template { get; set; }
}
除了Mapping缺少其主键之外,这种方法很有效,因为我不知道该怎么做。 我想要的是类映射,以具有由字段和模板形成的复合主键。困难在于我,因为Field类也有一个复合键。
答案 0 :(得分:3)
你需要这样的东西:
public class Mapping
{
[Key, ForeignKey("Field"), Column(Order=0)]
public int StoreID { get; set; }
[Key, ForeignKey("Field"), Column(Order=1)]
public int ID { get; set; }
[Key, ForeignKey("Template"), Column(Order=2)]
public int TemplateID { get; set; }
public Field Field { get; set; }
public Template Template { get; set; }
}
对于ForeignKey
属性,您可以指定与Key
属性类似的复合键顺序。或者,您也可以在导航属性上放置ForeignKey
属性,然后使用逗号分隔指定FK属性:
public class Mapping
{
[Key, Column(Order=0)]
public int StoreID { get; set; }
[Key, Column(Order=1)]
public int ID { get; set; }
[Key, Column(Order=2)]
public int TemplateID { get; set; }
[ForeignKey("StoreID, ID")]
public Field Field { get; set; }
[ForeignKey("TemplateID")]
public Template Template { get; set; }
}
(修改重复Column
属性错误 - &gt;已更正。)