cod*_*ove 2 c# many-to-many entity-framework poco
我有以下4个表(针对此问题进行了简化):
CompanyId | 名称
EmpoyeeId | CompanyId | FirstName | 姓
PermissionId | CompanyId | 允许
EmployeePermissionId | PermissionId | 员工ID
而POCO如下:
[Table("Employee")]
public class Employee
{
public int EmployeeId { get; set; }
public int CompanyId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Company Company { get; set; }
public List<Permission> Permissions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将公司和权限加载为Employee的属性.我可以使用以下代码加载公司:
var employee = _context.Employees
.Where(u => u.EmpoyeeId == 1234)
.Include(u => u.Company)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
不知道如何加载Permission集合.
您需要对数据库结构进行更改才能实现此目的.
您的EmployeePermission表应该只包含2个外键列.通过这样做,EF将透明地管理链接表,您可以Permissions在Employee课堂上拥有属性.
更改Employee类定义以使导航属性成为虚拟.
[Table("Employee")]
public class Employee
{
public int EmployeeId { get; set; }
public int CompanyId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<Permission> Permissions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以急切加载 Permissions
var employee = _context.Employees
.Where(u => u.EmpoyeeId == 1234)
.Include(u => u.Company).Include(u => u.Permissions)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |