C# 实体框架-链接到表中的所有项,然后添加新项?
我有两个简单的C# 实体框架-链接到表中的所有项,然后添加新项?,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我有两个简单的C#对象(用户和部门),如下所示(首先使用EF代码): 公共类用户 { int UserID{get;set;} 字符串名称{get;set;} 列出部门{get;set;} } 公共课系 { int DepartmentID{get;set;} 字符串名称{get;set;} 列出用户{get;set} } 我可以创建一个用户并向其中添加多个部门,一切都很好 我想做的是将用户设置为连接到“所有部门” 现在,虽然我可以将所有部门添加到一个用户中,但如果以后我添加一个新部门,我也必
C#
对象(用户和部门),如下所示(首先使用EF代码):
公共类用户
{
int UserID{get;set;}
字符串名称{get;set;}
列出部门{get;set;}
}
公共课系
{
int DepartmentID{get;set;}
字符串名称{get;set;}
列出用户{get;set}
}
我可以创建一个用户并向其中添加多个部门,一切都很好
我想做的是将用户设置为连接到“所有部门”
现在,虽然我可以将所有部门添加到一个用户中,但如果以后我添加一个新部门,我也必须记住将其添加到该用户中,这并不理想
我最初的想法(正确或错误)是向用户添加一个布尔AllDepartments属性。然而,虽然我可以让它工作,它并不干净。每当我调用一个用户时,我必须记住检查布尔值,并将部门列表构建为一个单独的查询(因此它在数据库中也不是真正的关系)
我的理想是创建一个全新的部门,在检索该部门时,它已经拥有所有应该连接到所有部门的用户,可以通过List属性进行导航
以前有没有人遇到过这个问题,并彻底解决了这个问题?面对同样的问题,我使用一个
部门组
表,每个部门至少属于一个组
- 然后,用户属于某个部门组(不再属于某个部门)
- 然后我有一个业务规则,将每个新部门添加到“所有部门组”
所有的解决方案都有其利弊。该解决方案的主要缺点(imho)是属于所有部门的用户自动属于一个新的绝密部门。您确定这就是您想要的吗?如果在部门实体中创建一个包含每个用户id的新列,该怎么办?不管怎样,最后你还是想要那样。或者创建一个名为AssignedDepartment的第三个实体,该实体具有用户ID和部门ID。实际上,这一抽象层可能适合我。它简化了添加/删除文档所需的额外代码。从数据库的角度来看,它不是那么“漂亮”,但会很好地工作。我正在导入一个旧的DB,它使用0作为所有文档的部门ID,这会导致很多问题,每次调用都会出现代码混乱的情况。
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}
}