首先在EF代码中具有其他属性的多对多

时间:2014-10-31 18:38:04

标签: c# .net entity-framework many-to-many entity-framework-6

我有两个实体之间的多对多关系。为了简单起见,我的实体是

class User
{
 int Id;
 string Name;
}

class Roles
{
 int Id;
 string Name;
}

我创建了一个附加属性的链接实体,以链接这些属性,如下所示

class UserRole
{
 int Id;
 User user;
 Role role;
 DateTime created;
}

我知道一种方法是在ListUserRole个实体中创建User Role个实现多对多关系。这在another post上定义得非常好。

在这里,要获取角色中的用户列表,您可能会编写类似

的内容
 User.UserRole.Where(r=>r.Role.Id = 1);

但是我发现另一种方法是在UserRole之间定义这种关系,即在两个实体中都不要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)另一种方法是创建RoleUser(不为Role设置List<UserRole>)。然后,您创建Role并同时设置UserRoleUser

我不确定正确的方法?是否应该导航链接实体以检索数据?

0 个答案:

没有答案