[英]Model relations in Entity Framework
我試圖基於數據庫構建一些模型,我有兩個表,一個表用於工作人員,另一個表用於分支。 每個工人都在分支機構工作,因此每個工人只有一個分支機構,而分支機構則有無限的工人。
我的工人模型:
public class Worker
{
public Worker()
{
Overhours = new List<Overhour>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public decimal WorkerId { get; set; }
public decimal BranchId { get; set; }
.....
public virtual Branch Branch { get; set; }
.....
}
分行:
public class Branch
{
public Branch()
{
Workers = new List<Worker>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public decimal BranchId { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Bir şube adı girmelisiniz.")]
public string BranchName { get; set; }
public virtual ICollection<Worker> Workers { get; set; }
}
這是問題所在,我可以使用m.Workers.Find(Id).Branch訪問worker分支,但是我想訪問在分支中工作的所有worker。 所以我想要像m.Branches.Find(Id).Workers這樣的東西。 它有效,但對我來說似乎很奇怪。 因為一個工作程序對象已經在其中所有分支,所以分支對象也有所有工作程序。 我什至不知道我需要這個,因為我可以通過使用LINQ to Entity或raw SQL輕松獲取所有在分支中工作的工人。
什么是正確的方法?
導航屬性( Worker
類中的Branch
和Branch
中的Workers
)是延遲加載的。 當您從數據庫中獲取一個Worker時,它不包含分支。 但是,每當需要分支時(即,當您讀取w.Branch
),惰性加載機制就會啟動並從數據庫中獲取它。 Branch
Workers
也是如此。
因此,作為一個簡單的答案,您正在使用正確的方法。
順便說一句,這里有很多東西要學習:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.