如何使用ado.net EF中无法定义两个对象之间的关系

时间:2010-12-23 06:24:52

标签: linq-to-entities

我有两个表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对象。

1 个答案:

答案 0 :(得分:0)

错误消息是不言自明的,您从GetUserByID和GetRoleById返回的对象附加到不同的DataContexts .. 我猜你是在为角色和用户使用不同的存储库..

要么考虑将它们合并到一个具有相同上下文的存储库中,要么在其他地方创建上下文,并将其作为参数传递给存储库。