具有多个外键用于单个表的类的代码优先实现

时间:2017-06-15 10:58:59

标签: c# ef-code-first

我目前有两个具有以下属性的类。 Class1 Class2 相关,并通过2个外键链接。

public class Class1
{
    public int Id { get; set; }
    public string Title { get; set; }

    public int OwnerId { get; set; }
    public int ModifiedById { get; set; }
    public User User { get; set; }
}

public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

我有几个问题:

  1. 我应该只声明用户类一次,还是应该为 OwnerId 声明一个,为 ModifiedById 声明一个?像public virtual User Ownerpublic virtual User ModifiedBy

  2. 之类的东西
  3. 最佳做法是使用公共虚拟,还是应该使用其他访问修饰符?

1 个答案:

答案 0 :(得分:0)

  

我应该只声明一次User类,还是应该为OwnerId声明一个,为ModifiedById声明一个?像公共虚拟用户所有者和公共虚拟用户ModifiedBy?

是的,您应该以这种方式管理代码,并且更容易理解Table1以两种不同的方式与Tabel2相关联,用于两种不同的目的。一个表示所有者的外键,另一个表示修改记录的用户。

  

使用public virtual是最佳做法,还是应该使用其他访问修饰符?

这取决于你的要求,如果你想让你的实体懒得加载,你应该将它定义为虚拟,因为实体框架将覆盖你标记为虚拟的相关实体,当你点击它时会懒惰地加载。< / p>