繁体   English   中英

实体框架代码优先 - 引用相同的表

[英]Entity Framework Code First - Reference same table

我仍然从Entity Framework Code First开始。 我希望能够在创建新资源时从列表中选择资源。 如何使用资源模型引用资源。

public class Resource
{

    public int ResourceId { get; set; }
    [Required]
    [DataType(DataType.EmailAddress)]
    [EmailAddress]
    public string EmailAddress { get; set; }
    [Required]
    public string Password { get; set; }
    public string FullName { get; set; }


    public int TimeManagerId { get; set; }

    public int TravelManagerId { get; set; }

    public int OvertimeManagerId { get; set; }

    public int AbsenceManagerId { get; set; }
    public virtual Resource TimeManager { get; set; }
    public virtual Resource TravelManager { get; set; }
    public virtual Resource OvertimeManager { get; set; }
    public virtual Resource AbsenceManager { get; set; }

}

我觉得你很亲密! 如果要按惯例执行此操作,可以将模型中的外键更改为[导航属性名称] [主要主键属性名称]的形式。 具体来说,将Id更改为ResourceId以便它匹配您正在引用的表的主要内容(恰好是它本身)...

public int TimeManagerResourceId { get; set; }
public int TravelManagerResourceId { get; set; }
public int OvertimeManagerResourceId { get; set; }
public int AbsenceManagerResourceId { get; set; }

由于您刚开始使用EF代码,我建议您安装Entity Framework Power Tools。 您将能够右键单击包含DbContext的.cs文件,它将生成映射的只读图。

尝试使用当前模型...右键单击图中的实体并查看表映射。 你会看到EF无法找出你的外键并为你创造了4个。 完成上述更改后,再次生成图表并查看差异。

编辑:代码第一次约定的文档... http://msdn.microsoft.com/en-us/data/jj679962.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM