Я использую Entity Framework 2.2.
У меня очень базовая c настройка: User
, UserRole
, Role
.
В идеале, я бы хотел для выполнения операций, подобных этим: User.Roles.Where(...)
. Но я не могу. Я должен загрязнить логи приложения c деталями структуры данных, поэтому я должен сделать что-то вроде этого: User.UserRoles.Where(x => x.Role...)
.
Есть ли способ сделать sh это?
Я попытался определить выражение для поиска пользователей с определенной c ролью:
public static Expression<Func<User, bool>> HasRole(string role)
{
return user => user.UserRoles.Any(x => x.Role.Name == role);
}
И назвать это так:
var admins = await _context.Users
.Where(User.HasRole("Admin"))
.ToListAsync();
Так что я не Мне не нужно знать о таблице UserRole
.
Я знаю, что есть открытая проблема на github, но я думал, какие обходные пути мы могли бы использовать сейчас?
Я видел другой подход к inte rnet:
public IEnumerable<Role> Roles => this.userRoles.Select(x => x.Role);
Было бы идеально, если бы он мог как-то автоматически переводиться в Expression, но мне нужно включить UserRoles, прежде чем я смогу использовать user.Roles
, что в принципе не решает мою проблему.