-1

我有这个功能

  • 它总是返回 true 但问题是它修改了表 User 但它没有修改表 Useracl
  • 如何更正此代码?

    try
    {
        NHibernate.ISession nhSession= User.OpenSession();
        using (var tx = nhSession.BeginTransaction())
        { 
            User u = new User() { 
                Account = acc, 
                Identification = identification, 
                ContactEmail = mail, 
                ContactName = nom, 
                ContactPhone = phone, 
                NotifyEmail = notify, 
                Password = mot 
            };
    
            nhSession.SaveOrUpdate(u);
            Useracl ua = new Useracl { Account = acc, UserID = identification, AccessLevel = 1, AclID = acc };
            nhSession.SaveOrUpdate(ua);
            tx.Commit();
            return true;
        }
    }
    catch
    {   
        return false;
    }
    
4

2 回答 2

1

NHibernate 不知道是保存(即插入)还是更新您的 Useracl 实例,因为它是使用复合 id 映射的。您需要明确告诉它您是保存新实例还是更新现有实例。在您的情况下,您需要致电:

nhsession.Save(ua);

代替

nhsession.SaveOrUpdate(ua);
于 2012-09-22T13:00:23.780 回答
0

尝试这个

   nhSession.SaveOrUpdate(u);

       用户acl ua = 新用户acl() {
        帐户 = 帐户,
        用户 ID = 标识,
        访问级别 = 1,
        AclID = 加号
       };
   nhSession.SaveOrUpdate(ua);
   tx.Commit();

于 2013-10-17T17:42:34.710 回答