Models:
public class User
{
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
}
public class Resource
{
[Key]
public int ResourceId { get; set; }
public string ResourceName { get; set; }
public string ResourceDescription { get; set; }
}
public class UserResource
{
[Key, Column(Order=0)]
public int UserId { get; set; }
[Key, Column(Order=1)]
public int ResourceId { get; set; }
public int ResourceQuantity { get; set; }
}
I want to select “ResourceName” from Resource model and “ResourceQuantity” from UserResource model for a given “UserId”. Also, once selected, do I need a brand new model to carry only those two specified columns?
Also note that UserResource model has a composite key so I am confused as to how to make the join… Is this right?
var userResources =
from r in imDB.Resources
join ur in imDB.UserResources
on r.ResourceId equals ur.ResourceId
select new { r.ResourceName, ur.ResourceQuantity };
Hence you’re using
Code firstyou can create your models are as below by usingEF conventions.Then EF will generate your
junction tableis asUsersResources.You don’t need to create additional model as you did.EF will look after that.UPDATE
You may try something like below:
Method 1 : Method based syntax
Method 2 : Query based syntax
I hope this will help to you.