C# EF5:仅加载未删除的相关记录(IsDeleted=false)
我首先使用EF5代码和自跟踪实体。如何确保仅加载类别实体的相关产品节点,即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:
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);
}
}