2013-06-25 3 views
0

Я использую код EF5 Сначала с объектами самоконтроля. Как я могу гарантировать, что загружаются только связанные с ним узлы продукта моего объекта категории, которые являются IsDeleted == false? Я создал модель с помощью EF Power Tools и хотел бы сохранить это дополнительное условие запроса где-то в классах сопоставления модели (в MyContext : DbContext или ProductMap : EntityTypeConfiguration<Product>). Каждый раз, когда я обращаюсь к атрибуту Products класса Category, загружаются только те продукты, которые не удаляются. Спасибо за вашу помощь!EF5: Загружать только связанные записи, которые не удаляются (IsDeleted = false)

ответ

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); 
    } 
} 

Я не проверял это, но он должен работать.

+0

Спасибо. Является ли это обычным способом предварительной фильтрации объектов с мягким удалением? Я бы предпочел, чтобы запрос мог быть указан где-то в отношении между двумя объектами, например. в здесь 'this.HasRequired (t => t.Category) .WithMany (t => t.Products) .HasForeignKey (d => d.CategoryId);'. Как вы его описываете, я должен запрашивать атрибут IsDeleted каждый раз, когда я обращаюсь к атрибуту 'Products' в классе' Category'. – Philippe

+0

Такой же подход будет работать, если он используется для самой сущности. – Jay