Entity Framework - link 到 table 中的所有项目,然后添加一个新项目?

Entity Framework - link to all items in a table, then add a new one?

我有 2 个简单的 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}
}

我可以创建一个用户并向其添加多个部门,太棒了。

我想做的是将用户设置为连接到 "All Departments"。

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

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

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

有没有人遇到过这种情况并且干净利落地解决了这种情况?

遇到同样的问题我用了departmentGrouptable,每个部门belonging/being至少要一组

  • 那么用户属于部门组(不再属于部门)。
  • 然后我有一个业务规则,将每个新部门添加到 'All departments group'

所有解决方案都各有利弊。该解决方案的主要缺点(恕我直言)是属于所有部门的用户自动属于一个新的绝密部门。你确定这是你想要的吗?