我正在使用C#.NET CORE 2.0应用程序中的Entity Framework 6。我需要从数据库中获取角色ID,其中roleName = x并向用户添加角色引用,如下所示:many table
我想避免2次访问数据库,我想一次性或单次Linq查询
UserDataModel userObj = new UserDataModel()
{
Id = fakeUserID,
Name = "k1",
Surname = "z",
Email = "k.z@yahoo.co.uk",
Roles = new List<UserRoleDataModel>
{
new UserRoleDataModel {
UserId = fakeUserID,
RoleId = Context.Roles.Where(roleName => roleName.Name == RoleName).Select(x=>x.Id)
}
}
};
Context.Add<UserModel>(userObj);
Context.SaveChanges();
上面的代码在RoleId给出了错误 参考屏幕截图;
答案 0 :(得分:1)
出错,因为您要将IQueryable
分配给Int
类型的属性(我假设其Int
)。你应该这样做:
RoleId = Context.Roles.Where(roleName => roleName.Name == RoleName && roleName.Id==Id).Select(x=>x.Id).First();