K.Z
K.Z

Reputation: 5075

LINQ perform select and insert in single query

I am working on Entity Framework 6 in C# .NET CORE 2.0 application. I have requirement to get role id from database where roleName = x and add role reference to user as in one: many table

I want to avoid 2 trip to database, I want to do in one go or in single Linq query

  UserDataModel userObj = new UserDataModel()
        {
            Id = fakeUserID,
            Name = "k1",
            Surname = "z",
            Email = "[email protected]",
            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();

above code gives me error at RoleId refer in screen shot;

enter image description here

Upvotes: 1

Views: 731

Answers (1)

Zaid Mirza
Zaid Mirza

Reputation: 3709

Error because you are assigning IQueryable to a Property of type Int (I Assumed its Int). You should do this:

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

Upvotes: 1

Related Questions