我使用Ef Core 2.1,在其中启用了软删除查询过滤器。
在某些情况下,我想从实体中检索一个软删除的导航属性,但无法检索数据(该导航属性为空,因为它已被软删除)。
我以这份doc(于2017年编写)作为参考,并指出
过滤器不能包含对导航属性的引用。
我想知道是否有任何方法可以启用这种行为。
public class Form {
public int Id { get; set; }
public virtual Sprint Sprint {get; set;}
}
public class Sprint: ISoftDeleteable {
public int Id { get; set; }
public string Name {get; set;}
}
// Indicates that every model that implements this interface should use soft delete.
public interface ISoftDeleteable
{
}
// Both statements have returned null.
Sprint sprint = applicationDbContext.Forms.FirstOrDefault(f => f.Id == 1).Sprint;
Sprint sprint = applicationDbContext.Forms.IgnoreQueryFilters().FirstOrDefault(f => f.Id == 1).Sprint;
作为旁注,我想说明一下我在StartUp.cs中使用了延迟加载代理
services.AddDbContext<ApplicationDbContext>(options =>
options.UseLazyLoadingProxies().UseSqlServer(connectionString));
因为不是我的模型,所以与其使用'Include()'和'ThenInclude()'相比,这里的示例要复杂得多。使用include将使代码更加复杂且难以维护。
答案 0 :(得分:1)
尝试
var data = DbContext.Set<Table>().IgnoreQueryFilters().ToList();
或
var data = DbContext.TableName.IgnoreQueryFilters().ToList();