实体代码首先DbSet使用include with条件

本文关键字:include with 条件 使用 DbSet 代码 实体 | 更新日期: 2023-09-27 18:05:19

我有一个调用ICB的类,它具有ICBResource类型列表的属性,可以将许多资源关联到一个ICB,问题是当我想要删除与ICB关联的资源时,该资源未真正删除,并且仅在删除的布尔属性中设置为true,删除的资源仍然从DB返回。

例子:

如果这个ICB关联了10个资源,但后来删除了3个资源,我想只列出剩下的7个。

有一种方法可以为.includes ?

实现条件
// ICB class
public class ICB
{
    public ICB()
    {
        ICBResources = new List<ICBResource>();
    }
    public int ICBId { get; set; }
    public string Location { get; set; }
    public ICollection<ICBResource> ICBResources { get; set; }
}
// Resource class
public class ICBResource
{
    public int ICBResourceId { get; set; }
    public virtual ICB ICB { get; set; }
    public string name{ get; set; }
    public bool Deleted { get; set; }
}

//here is my Repository and how I select my ICB with the resources associated
public ICB GetICB(int id)
{
    return GetDbSet<ICB>()
            .Include("ICBResources")
            .SingleOrDefault(i => i.ICBId == id);
}

有一种方法可以包含另一个条件,如Where(i => i.ICBResources。在哪里(r => ! r.deleted);

实体代码首先DbSet使用include with条件

例如

public ICB GetICB(int id)
{
    return GetDbSet<ICB>()
        .Include("ICBResources")
        .SingleOrDefault(i => i.ICBId == id && i.ICBResources.Where(r => !r.Deleted).Count() == 0);
}

如果问题是关于过滤的,答案是否定的