Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# nhibernate更新_C#_Nhibernate - Fatal编程技术网

C# nhibernate更新

C# nhibernate更新,c#,nhibernate,C#,Nhibernate,我有这个功能 它总是返回true,但问题是它修改表用户,但不修改表Useracl 如何更正此代码 try { NHibernate.ISession nhSession= User.OpenSession(); using (var tx = nhSession.BeginTransaction()) { User u = new User() { Account = acc, Identificat

我有这个功能

  • 它总是返回true,但问题是它修改表用户,但不修改表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;
    }
    

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

nhsession.Save(ua);
而不是

nhsession.SaveOrUpdate(ua);
试试这个

nhSession.SaveOrUpdate(u); Useracl ua = new Useracl() { Account = acc, UserID = identification, AccessLevel = 1, AclID = acc }; nhSession.SaveOrUpdate(ua); tx.Commit(); nhSession.SaveOrUpdate(u); Useracl ua=新的Useracl(){ 账户=acc, UserID=标识, 访问级别=1, AclID=acc }; nhSession.SaveOrUpdate(ua); tx.Commit();
您可以从使其可读开始。我们不是活着的编译器。然后可以发布NH映射。是否引发异常?如果您不接受异常,您会发现更容易修复。没有异常,事务将提交。第二个对象无法保存@开发人员,请发布您的类定义以及NHibernate映射。@Lee如果我使用(如果其他)相同的东西!!!!你是否意识到有一个编辑按钮,你可以格式化你的代码,使其看起来不像启示录?我很抱歉,但如果你不能发贴一个易读的问题,我不会费心去解读这段经文。