Пользовательское расширение предложения where со значениями по умолчанию EF Core 5.0.3

#c# #entity-framework-core

#c# #entity-framework-core

Вопрос:

Я добавляю это в каждый запрос, и я не могу не думать, что есть способ, которым я мог бы либо создать пользовательское расширение where, чтобы оно было по умолчанию в моих запросах? Или я переоцениваю это?

Я говорю о isActive и isDeleted который предназначен для моих столбцов с программным удалением.

Я использую EF Core 5.0.3, если это имеет значение, для того, что мне нужно, я нет, это всего одна строка, но я чувствую, что часть повторяющегося кода кода будет сокращена. Или, по крайней мере, более чистый способ его применения? Это для каждого класса, к которому я буду запрашивать.

 public async Task<IActionResult> ClubRoles() {
    return View(await _context.ClubUsers.Where(w => w.isActive == true amp;amp; w.isDeleted == false).ToListAsync();    
}
 

Комментарии:

1. Глобальный фильтр запросов

2. И отредактируйте, что делает мой формат кода хуже, если мой формат кода полностью легален в реальном мире и используется многими сотрудничающими организациями. Ничто не говорит о том, что сообщение должно находиться в видимой области средства форматирования кода, следовательно, почему существуют полосы прокрутки.

3. Нет, но никому не повредит сделать ваш код видимым с первого взгляда. В конце концов, это помогает вам. Вы могли бы быть немного более благодарны людям, пытающимся сделать ваш вопрос более читаемым. Первая версия, ваша версия, была полна опечаток. Когда я вижу подобный вопрос, я не склонен прилагать к нему больше усилий, чем задавший его.

Ответ №1:

Достаточно просто с глобальными фильтрами запросов: https://docs.microsoft.com/en-us/ef/core/querying/filters

Ваш случай — использование учебника

 modelBuilder.Entity<Post>().HasQueryFilter(p => !p.IsDeleted);
 

На случай, если вы хотите его проигнорировать

 blogs = db.Blogs
    .Include(b => b.Posts)
    .IgnoreQueryFilters()
    .ToList();