所以我有一个具有复合主键的类:
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; }
}
这很有效,只是映射缺少主键,因为我不知道该怎么做。 我想要的是类映射具有由字段和模板形成的复合主键。对我来说困难在于 Field 类也有一个复合键。
最佳答案
你需要这样的东西:
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; }
}
(编辑重复列
属性错误 -> 已更正。)
关于c# - Entity Framework ,具有一个主键,该主键是对具有复合主键的实体的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718647/