LINQ在单个查询中执行select和insert

时间:2018-02-07 12:32:09

标签: linq entity-framework-6 .net-core-2.0

我正在使用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给出了错误     参考屏幕截图;

enter image description here

1 个答案:

答案 0 :(得分:1)

出错,因为您要将IQueryable分配给Int类型的属性(我假设其Int)。你应该这样做:

RoleId = Context.Roles.Where(roleName => roleName.Name == RoleName && roleName.Id==Id).Select(x=>x.Id).First();