实体框架:如何返回从表中的一行复合主键?(Entity framework: How to retu

2019-07-19 15:41发布

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

Answer 1:

我想你lookding为DbSet.Find方法。 该方法通过主键发现实体。 如果你有复合主键,然后传中,他们在模型中定义的顺序键值:

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


文章来源: Entity framework: How to return a row from a table with composite keys?