我有两个表tblRole和tblUser。 tblUser有一个“RoleID”的字段与tblRole有关。
以下是一些主要代码:
tblUserDao userDao = new tblUserDao();
tblRoleDao roleDao = new tblRoleDao();
var usr = userDao.GetUserByID(8);
if (usr != null)
{
usr.RealName = "XXXX";
var role = roleDao.GetRoleByID(4);
usr.tblRole = role;
isSuc = userDao.Updata(usr);
}
public tblUser GetUserByID(int userID)
{
using (TOMSDBEntities tomsEntities = new TOMSDBEntities())
{
var tUser = tomsEntities.tblUser.Include("tblRole").Where(u => u.UserID == userID).FirstOrDefault();
return tUser;
}
}
public bool Updata(tblUser model)
{
using (TOMSDBEntities tomsEntities = new TOMSDBEntities())
{
tomsEntities.GetObjectByKey(model.EntityKey);
tomsEntities.ApplyPropertyChanges(model.EntityKey.EntitySetName, model);
return (tomsEntities.SaveChanges() > 0);
}
}
现在,报告错误,它是无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象。
答案 0 :(得分:0)
错误消息是不言自明的,您从GetUserByID和GetRoleById返回的对象附加到不同的DataContexts .. 我猜你是在为角色和用户使用不同的存储库..
要么考虑将它们合并到一个具有相同上下文的存储库中,要么在其他地方创建上下文,并将其作为参数传递给存储库。