Entity framework: How to return a row from a table with composite keys?

composite-key entity-framework return row

Question

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

If I wanted to return all the different buildings that belong to a user, I would do the following:

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

My question is what if I wanted to return a specific building from a specific user? What would be the most 'efficient' way of doing this? Is there a better way (such as a built-in function) than the following:

database.UserBuildings.Where(b => b.UserId == userId && b.BuildingId == buildingId);
1
9
2/8/2013 9:38:58 PM

Accepted Answer

I think you are lookding for DbSet.Find method. This method finds entity by primary key. If you have composite primary key, then pass key values in the order they defined in model:

var userBuilding = database.UserBuildings.Find(userId, buildingId);
17
2/8/2013 9:42:30 PM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow