实体框架 - 链接到表中的所有项目,然后添加一个新项目?

时间:2015-02-23 14:17:09

标签: c# entity-framework ef-code-first

我有两个简单的C#对象(用户和部门)如下(首先使用EF代码):

public class User
{
     int UserID {get; set;}
     string Name {get; set;}
     List<Department> Departments {get; set;}
}

public class Department
{
     int DepartmentID {get; set;}
     string Name {get; set;}
     List<User> Users {get;set}
}

我可以创建一个用户并为其添加多个部门,一切都很棒。

我想要做的是将用户设置为连接到&#34;所有部门&#34;。

现在虽然我可以将所有部门添加到用户,但如果稍后我添加一个新部门,我必须记住将其添加到该用户 - 不理想。

我最初的想法(正确或错误)是向用户添加一个布尔AllDepartments属性。然而,虽然我可以使它工作,但它根本不干净。每当我调用一个用户时,我必须记住检查该布尔值,并将部门列表构建为单独的查询(因此它在数据库中也不是真正的关系)。

我的理想是创建一个全新的部门,并且在检索该部门时,它已经拥有应该连接到所有部门的所有用户,可以通过List属性进行导航。

之前有没有人遇到过这种情况并干净利落地解决了这个问题?

1 个答案:

答案 0 :(得分:0)

面对同样的问题我使用departmentGroup表,每个部门属于/至少属于一个组。

  • 然后一个用户属于一个部门组(而不再是一个部门)。
  • 然后我制定了一项业务规则,将每个新部门添加到“所有部门”小组&#39;

所有解决方案都有其优点和缺点。该解决方案的主要内容是属于所有部门的用户自动属于新的最高机密部门。你确定这是你想要的吗?