【发布时间】:2021-07-23 13:33:08
【问题描述】:
假设我有两个具有多对多关系的实体并手动创建连接表:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<UserPermission> UserPermissions { get; set; }
}
public class Permission
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<UserPermission> UserPermissions { get; set; }
}
public class UserPermission
{
public int UserId { get; set; }
public User User { get; set; }
public int PermissionId { get; set; }
public Permission Permission { get; set; }
}
如果我想知道用户是否有特定权限,我可以运行这样的简单查询
var query = _context.UserPermissions
.Where(up => up.UserId == userId && up.PermissionId == permissionId);
现在说我删除连接表并让实体框架为我创建它:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Permission> Permissions { get; set; }
}
public class Permission
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; set; }
}
如何在数据库上执行同样的简单查询,而不需要引入大量不必要的数据或使查询过于复杂?
【问题讨论】:
标签: c# entity-framework-core ef-core-5.0