Jar*_*ger 6 c# linq entity-framework-core asp.net-core
我正在使用新的.net核心和EF.
我需要帮助包括linq命令.我有一些1:N模型,如果集合包含一些标记为已删除的数据,我不想包含它们.
怎么做?
var company = await _context.Company
.Include(y => y.Administrators)
.Include(y => y.CompanyPartTimers)
.Include(z => z.WorkPlaces)
.Include(z => z.Requirements)
.FirstAsync(x => x.Id == id);
Run Code Online (Sandbox Code Playgroud)
如果我添加条件
.Include(z => z.WorkPlaces).Where(x=>x.WorkPlaces.Where(x=>!x.IsDeleted))
Run Code Online (Sandbox Code Playgroud)
它不起作用.如何正确写?
接下来的事情是我有IDeletable接口,如果我有一些自定义的linq表达式并且可以为ex做的话会更好.
.Include(z => z.WorkPlaces).GetNonDeleted()
Run Code Online (Sandbox Code Playgroud)
有谁知道怎么做?我尝试过这样的事情
public static class LinqExtension
{
public static IEnumerable<T> GetActive<T>(this IEnumerable<T> source) where T : class, IDeletable
{
return source.Where(x => x.IsDeleted);
}
}
Run Code Online (Sandbox Code Playgroud)
多谢你们.
您可以在DbContext中配置查询过滤器.
modelBuilder.Entity<Administrator>()
.HasQueryFilter(admin => !EF.Property<boolean>(admin, "IsDeleted"));
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩
参考链接:https://docs.microsoft.com/en-us/ef/core/querying/filters
| 归档时间: |
|
| 查看次数: |
2958 次 |
| 最近记录: |