#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();