-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 は、複合 ID でマップされているため、Useracl インスタンスを保存 (挿入) するか更新するかを認識しません。新しいインスタンスを保存するのか、既存のインスタンスを更新するのかを明示的に伝える必要があります。あなたの場合、あなたは呼び出す必要があります:

nhsession.Save(ua);

それ以外の

nhsession.SaveOrUpdate(ua);
于 2012-09-22T13:00:23.780 に答える