9
  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);
4

1 回答 1

17

我认为您正在寻找DbSet.Find方法。此方法通过主键查找实体。如果您有复合主键,则按照它们在模型中定义的顺序传递键值:

var userBuilding = database.UserBuildings.Find(userId, buildingId);
于 2013-02-08T21:42:30.373 回答