Я использую Entity Framework Core Identity.Все мои сущности имеют свойство под названием CreatedBy
, внешний ключ для встроенной таблицы Identity User
.В моем API есть конечная точка GetAll()
, которая возвращает все записи из таблиц, связанных с этими объектами.Я хочу, чтобы этот GetAll()
возвращал только записи, созданные текущим вошедшим пользователем.Я могу получить UserId
из HttpContext
, но мне было интересно, смогу ли я автоматически ограничить записи.
Например, я могу выполнить подобное действие, чтобы получить такое поведение:
return _context.Entities.Where(e => e.UserId == userIdFromHttpContext).ToList()
Однако это дополнительное условие, которое я должен был бы вставить в каждое предложение Where
в каждом будущем методе Get
, который я бы написал.Это очень избыточно для меня.
Я хотел бы просто позвонить
return _context.Entities.ToList()
, что автоматически отфильтровывает все записи, не связанные с текущим вошедшим пользователем.
Могу ли я что-нибудь сделать, чтобы настроить какое-то «автоматическое» предопределенное условие where в DbContext
, которое применяется ко всем таблицам в контексте, только один раз?Предпочтительно я хотел бы добавить HttpContext
в DbContex
t (я знаю, что это можно сделать) и настроить это поведение в методе OnConfiguring()
там.
edit: я бы хотелпо возможности избегайте обертки вокруг класса вокруг контекста.Это приложение работает над студентами колледжа, и я хотел бы, чтобы они использовали "ванильные" Entity Framework
соглашения для сбора данных, а не работали с какой-то пользовательской реализацией