Entity Framework Core: проблема с методом Contains
Вот моя упрощенная модель БД:
public class Chat
{
public ICollection<ApplicationUser> Users {get; set;} //nav property - represents participants of a chat
}
public class ApplicationUser : IdentityUser // it represents a net-identity user; it does not have any references to chats
{...}
Итак, в классе контроллера я пытаюсь получить чаты, такие как содержать текущего пользователя в качестве участника:
var user = GetUser();
_context.Chats.Where(chat => chat.Users.Contains(user)).ToList();
Этот код вызывает исключение:
Вы не можете использовать тип выражения...ApplicationUser для типа параметра "Microsoft.EntityFrameworkCore.Storage.ValueBuffer" метода "Boolean Contains[ValueBuffer](System.Collections.Generic.IEnumerable`1[Microsoft.EntityFrameworkCore.Storage.Valueuu ], Microsoft.EntityFrameworkCore.Storage.ValueBuffer)"
В чем здесь проблема?
1 ответ
Решение
Вам нужно использовать Any(), как это
var chatsList =_context.Chats.Where(chat => chat.Users.Any(u => u.id== user.id)).ToList();