Я использую код EF5 Сначала с объектами самоконтроля. Как я могу гарантировать, что загружаются только связанные с ним узлы продукта моего объекта категории, которые являются IsDeleted == false
? Я создал модель с помощью EF Power Tools и хотел бы сохранить это дополнительное условие запроса где-то в классах сопоставления модели (в MyContext : DbContext
или ProductMap : EntityTypeConfiguration<Product>
). Каждый раз, когда я обращаюсь к атрибуту Products
класса Category
, загружаются только те продукты, которые не удаляются. Спасибо за вашу помощь!EF5: Загружать только связанные записи, которые не удаляются (IsDeleted = false)
0
A
ответ
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);
}
}
Я не проверял это, но он должен работать.
Спасибо. Является ли это обычным способом предварительной фильтрации объектов с мягким удалением? Я бы предпочел, чтобы запрос мог быть указан где-то в отношении между двумя объектами, например. в здесь 'this.HasRequired (t => t.Category) .WithMany (t => t.Products) .HasForeignKey (d => d.CategoryId);'. Как вы его описываете, я должен запрашивать атрибут IsDeleted каждый раз, когда я обращаюсь к атрибуту 'Products' в классе' Category'. – Philippe
Такой же подход будет работать, если он используется для самой сущности. – Jay