2017-06-15 67 views
0

我目前有两个具有以下属性的类。 Class1Class2有关,并通过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. 最好的做法是使用公共虚拟还是应该使用不同的访问修饰符?

回答

0

我应该声明User类只有一次或者我应该声明一个用于OWNERID,一个用于ModifiedById?像公共虚拟用户所有者和公共虚拟User ModifiedBy?

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

最好的做法是使用公共虚拟还是应该使用不同的访问修饰符?

这取决于您的要求,如果你想你的实体延迟加载比你应该把它定义为虚拟的实体框架将覆盖你标记为虚拟的是相关的实体,当你打得到会懒洋洋地加载那。

+0

如果我从属性中分离虚拟类以使代码更清洁,它会起作用吗?或者应该始终是班级在外键之下? –

+0

@JoshMonreal我没有找到你...... –

+0

我的意思是我想为属性创建一个区域,然后在它下面是虚拟类的区域。因此,我不想将'public User Owner'放在OwnerId下面,而是希望将它与'public User ModifiedBy'放在类属性下面的一个部分中。我想知道这样做是否会有任何影响。 –

相关问题