C# EF5:仅加载未删除的相关记录(IsDeleted=false)

C# EF5:仅加载未删除的相关记录(IsDeleted=false),c#,entity-framework,entity-framework-5,dbcontext,C#,Entity Framework,Entity Framework 5,Dbcontext,我首先使用EF5代码和自跟踪实体。如何确保仅加载类别实体的相关产品节点,即IsDeleted==false?我使用EF Power工具创建了模型,并希望将这个额外的查询条件存储在模型映射类中的某个位置(在MyContext:DbContext或ProductMap:EntityTypeConfiguration中)。每次访问Category类的Products属性时,只应加载未删除的产品。谢谢你的帮助 在您的上下文中,您可以添加一个返回查询的方法: public class MyContext:

我首先使用EF5代码和自跟踪实体。如何确保仅加载类别实体的相关产品节点,即
IsDeleted==false
?我使用EF Power工具创建了模型,并希望将这个额外的查询条件存储在模型映射类中的某个位置(在
MyContext:DbContext
ProductMap:EntityTypeConfiguration
中)。每次访问
Category
类的
Products
属性时,只应加载未删除的产品。谢谢你的帮助

在您的上下文中,您可以添加一个返回查询的方法:

public class MyContext: DbContext
{
    public DbSet<Entity> Entities {get;set;}

    public IQueryable<Entity> NonDeletedEntities()
    {
        return this.Entities.Where(e => e.IsDeleted == false);
    }
}
更新

如您在评论中所述,如果您希望从类别实体访问未删除的产品

public class Category 
{
    public virtual ICollection<Product> Products { get; set; }
    public IQueryable<Products> NonDeletedProductts() 
    {
        return this.Products.Where(e => e.IsDeleted == false);
    }
}
公共类类别
{
公共虚拟ICollection产品{get;set;}
公共可查询非删除产品()
{
返回此.Products.Where(e=>e.IsDeleted==false);
}
}

我还没有测试过这个,但它应该可以工作。

谢谢。这是预过滤软删除实体的常用方法吗?我更希望查询可以在两个实体之间的关系中的某个地方指定,例如在这里
this.HasRequired(t=>t.Category).WithMany(t=>t.Products).HasForeignKey(d=>d.CategoryId)。按照您的描述,每次访问
类别
中的
产品
属性时,我都必须查询
IsDeleted
属性。
public class Category 
{
    public virtual ICollection<Product> Products { get; set; }
    public IQueryable<Products> NonDeletedProductts() 
    {
        return this.Products.Where(e => e.IsDeleted == false);
    }
}