В операторе, в котором вы создаете экземпляр объекта userdetail, вы используете отдельный контекст для запроса роли пользователя:
UserContext ctx = new UserContext ();
UserDetail user = new UserDetail
{
**UserRole = ctx.UserRole.Where(id => id.RoleID == 2).Select(r => r).FirstOrDefault(),**
FirstName = usrInfo.FirstName,
LastName = usrInfo.LastName,
UserName = usrInfo.UserName,
Password = usrInfo.Password,
Email = usrInfo.Email,
};
_unitofwork.userDetail.Add(user);
if (_unitofwork.Completed() > 0)
return Request.CreateResponse(HttpStatusCode.OK, "Created");
else
return Request.CreateResponse()
Youзатем добавьте пользователя в коллекцию userdetail в объекте _unitofwork, который имеет собственный контекст.Чтобы выполнить эту работу, полученный вами пользовательский объект должен находиться в том же контексте, в который вы добавляете объект userdetail.
Таким образом, вы, вероятно, хотите что-то вроде:
UserDetail user = new UserDetail
{
UserRole = _unitofwork.UserRole.Where(id => id.RoleID == 2).Select(r => r).FirstOrDefault(),
FirstName = usrInfo.FirstName,
LastName = usrInfo.LastName,
UserName = usrInfo.UserName,
Password = usrInfo.Password,
Email = usrInfo.Email,
};
_unitofwork.userDetail.Add(user);