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

本文关键字:记录 IsDeleted false 加载 删除 EF5 | 更新日期: 2023-09-27 18:19:48

我使用的是带有自跟踪实体的EF5 Code First。如何确保仅加载我的Category实体的相关Product节点,即IsDeleted == false?我使用EF Power Tools创建了Model,并希望将这个额外的查询条件存储在模型映射类中的某个位置(在MyContext : DbContextProductMap : EntityTypeConfiguration<Product>中)。每次访问Category类的Products属性时,只应加载未删除的产品。谢谢你的帮助!

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

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

public class MyContext: DbContext
{
    public DbSet<Entity> Entities {get;set;}
    public IQueryable<Entity> NonDeletedEntities()
    {
        return this.Entities.Where(e => e.IsDeleted == false);
    }
}

现在,您可以使用该查询并将其与其他条件聚合,它们都将被查询

new MyContext().NonDeletedEntities().Where(e => e.Name == "Philippe");
//is the same as
new MyContext().Entities.Where(e => e.IsDeleted == false && e.Name == "Philippe");

更新

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

public class Category 
{
    public virtual ICollection<Product> Products { get; set; }
    public IQueryable<Products> NonDeletedProductts() 
    {
        return this.Products.Where(e => e.IsDeleted == false);
    }
}

我还没有对此进行测试,但它应该有效。