Entity framework: как вернуть строку из таблицы с составными ключами?

  public class UserBuilding
    {
        [Key, Column(Order = 0)]
        public int UserId { get; set; }
        [Key, Column(Order = 1)]
        public int BuildingId { get; set; }
        public int BuildingLevel { get; set; }
    }

Если бы я хотел вернуть все различные здания, принадлежащие пользователю, я бы сделал следующее:

database.UserBuildings.Where(b => b.UserId == userId);

мой вопрос в том, что, если бы я хотел вернуть конкретное здание от конкретного пользователя? Каков был бы наиболее "эффективный" способ сделать это? Есть ли лучший способ (например, встроенная функция), чем следующее:

database.UserBuildings.Where(b => b.UserId == userId && b.BuildingId == buildingId);

1 ответов


Я думаю, что вы lookding для в dbset.Найти метод. Этот метод находит сущность по первичному ключу. Если у вас есть составной первичный ключ, передайте значения ключей в порядке, определенном в модели:

var userBuilding = database.UserBuildings.Find(userId, buildingId);