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

时间:2014-02-18 06:37:50

标签: c# entity-framework asp.net-mvc-4 ef-code-first

我仍然从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; }

}

1 个答案:

答案 0 :(得分:2)

我觉得你很亲密!如果要按惯例执行此操作,可以将模型中的外键更改为[导航属性名称] [主要主键属性名称]的形式。具体来说,将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

相关问题