【发布时间】:2020-01-22 10:14:44
【问题描述】:
我有一个模型Activity,它有一些导航属性。
我在使用 EF 时使用延迟加载代理来获取所有属性。
NotMapped 属性Status 使用导航属性ApprovalStatus。
当获取状态为 true 的 LINQ 条件的活动时,它会引发错误
System.InvalidOperationException:为警告生成错误 'Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingWarning: 尝试延迟加载导航属性“ApprovalStatus” 'ActivityProxy' 类型的分离实体。不支持延迟加载 对于分离的实体或加载的实体 'AsNoTracking()'。'
型号:
public class Activity {
...
public virtual ICollection<Approver> ApprovalStatus {get; set;}
[NotMapped]
public bool? Status {
get {
if (ApprovalStatus.Any(x => ...) return false;
if (ApprovalStatus.All(x => ...) return true;
return null;
}
}
}
我正在尝试执行的查询:
applicationDbContext.Activities.Where(a => a.Status == true);
但如果我在条件之前将活动转换为列表,它会起作用。
applicationDbContext.Activities.ToList().Where(a => a.Status == true);
【问题讨论】:
-
Activity 的声明是什么?
标签: c# entity-framework .net-core entity-framework-core