我有两个实体之间的多对多关系。为了简单起见,我的实体是
class User
{
int Id;
string Name;
}
class Roles
{
int Id;
string Name;
}
我创建了一个附加属性的链接实体,以链接这些属性,如下所示
class UserRole
{
int Id;
User user;
Role role;
DateTime created;
}
我知道一种方法是在List
和UserRole
个实体中创建User
Role
个实现多对多关系。这在another post上定义得非常好。
在这里,要获取角色中的用户列表,您可能会编写类似
的内容 User.UserRole.Where(r=>r.Role.Id = 1);
但是我发现另一种方法是在User
和Role
之间定义这种关系,即在两个实体中都不要List
UserRole
。要访问相关数据,您可以使用UserRole
实体。
所以要在这里获取列表,你需要做
UserRole.Include(u=>u.User).Include(r=>r.Role).Where(a=>a.Role.Id = 1)
编辑:
我喜欢第一种方式,但我担心有多种方法可以创建关联。
1)您可以创建仅UserRole
属性集的User
。然后创建一个新的Role
,并将新创建的UserRole
添加到List<UserRole>
的{{1}}
2)另一种方法是创建Role
和User
(不为Role
设置List<UserRole>
)。然后,您创建Role
并同时设置UserRole
和User
我不确定正确的方法?是否应该导航链接实体以检索数据?