c# - Entity Framework ,具有一个主键,该主键是对具有复合主键的实体的引用

标签 c# entity-framework-4

所以我有一个具有复合主键的类:

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/

相关文章:

c# - ASP.NET Core 2 SignalR Hub 接收复杂对象而不是字符串

c# - Entity Framework 中循环引用的 WCF Datacontract 序列化问题

entity-framework-4 - 我可以将 .NET 集合中的列表对象与 EF 中的实体对象连接起来吗

entity-framework-4 - 可以从 View 中使用 `System.Data.Objects.SqlClient.SqlFunctions` 吗?

c# - 尝试使用 LINQ 按创建日期获取目录中的文件列表

c# - 将代码从 .aspx 文件移动到 .cs 文件,没有任何区别

entity-framework - 我如何在没有 App.config 的情况下使用 Entity Framework

stored-procedures - EF中存储过程的输出参数

c# - 为什么这个下拉列表没有完成它应该做的事情?

c# - 可为空的日期时间异常