【发布时间】:2015-08-31 02:07:04
【问题描述】:
我正在尝试基于数据库构建一些模型,我有两张表,一张用于工人,另一张用于分支机构。每个工人都在一个分支中工作,因此每个工人只有一个分支,而分支有无限的工人。
我的工人模型:
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 访问工作人员分支,但我想访问在分支中工作的所有工作人员。所以我想要像 m.Branches.Find(Id).Workers 这样的东西。它有效,但对我来说似乎很奇怪。因为一个工作对象已经有所有的分支,分支对象也有所有的工作人员。我什至不知道我需要这个,因为我可以通过使用 LINQ to Entity 或原始 SQL 轻松获得在分支中工作的所有工作人员。
正确的做法是什么?
【问题讨论】:
-
“正确”的方式取决于您的需求。您配置它的方式是“正确”的方式;但你可以通过其他方式做到这一点。您只能通过 Branch 访问 Workers,反之亦然;为此,您将从一个或其他类中删除您的导航属性。
标签: c# asp.net database entity-framework