【发布时间】:2018-07-10 10:29:12
【问题描述】:
我正在尝试创建一个 wcf 服务,该服务通过 ef6 从数据库加载数据并将数据发送回客户端。 现在,如果我尝试从数据库中加载依赖数据,就会遇到问题。
我可以忍受急切的负载,所以我在我的上下文类中禁用了延迟加载。
base.Configuration.ProxyCreationEnabled = false;
base.Configuration.LazyLoadingEnabled = false;
现在我有一个模型类,它通过导航属性引用另一个模型类。 (这里是类)
public class Employee {
public Guid EmployeeId {get;set;}
public ICollection<Address> Addresses {get;set;}
}
public class Address {
public Guid AdressId {get;set;}
public Guid EmployeeId {get;set;}
public Employee Employee {get;set;}
}
所以你可以看到 Employee 持有一个地址列表,一个地址绑定到一个员工(所以如果我是对的,我们有一个 1:n 关系)
现在我们有了模型类和数据上下文,我尝试使用这个查询从数据库中检索值。
var employee = await _context.Employees
.AsNoTracking()
.Include(x => x.Addresses)
.FirstOrDefaultAsync(x => x.EmployeeId == employeeId);
在这里,我不知何故遇到了这样一个问题,即生成的员工类通过内部地址类对其自身进行了引用。就这样
- 员工
- 通过地址导航属性引用的地址
- 通过员工导航属性引用员工
- 等等等等
- 通过地址导航属性引用的地址
我已经告诉 ef 只包含我的 Employee 属性中的 Adress 属性。 所以我的问题是为什么 ef 还自动在 adress 属性中包含父 Employee 属性。(我认为它的 ef 核心与 ThanInclude 的行为在 ef 中有类似的东西吗?)
如果我无法停止此自动加载,我将无法通过 wcf 服务发送响应结果,因为该服务提到了循环引用。
【问题讨论】:
标签: entity-framework wcf