我将 EF5 Code First 与自跟踪实体一起使用。如何确保仅加载我的 Category 实体的相关 Product 节点,即IsDeleted == false
?我使用 EF Power Tools 创建了模型,并希望将此额外的查询条件存储在模型映射类中的某个位置(在MyContext : DbContext
或中ProductMap : EntityTypeConfiguration<Product>
)。每次访问该类的Products
属性时,Category
应该只加载未删除的产品。谢谢你的帮助!
问问题
397 次
1 回答
1
在您的上下文中,您可以添加一个返回查询的方法:
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);
}
}
我没有对此进行测试,但它应该可以工作。
于 2013-06-25T19:58:10.490 回答