Asp.net nhibernate,行被另一个事务更新或删除(或未保存的值映射不正确)

Asp.net nhibernate,行被另一个事务更新或删除(或未保存的值映射不正确),asp.net,nhibernate,Asp.net,Nhibernate,插入新信息时,会发生错误。 更新现有信息时,不会出现任何问题。 在不使用代码的情况下将相同的信息放入数据库也没有问题。 测试代码不会试图同时存储相同的信息 映射文件 <class name="FileInfo" table="update_list" dynamic-update="true" > <cache usage="read-write"/> <id name="Name" type="string"> <gener

插入新信息时,会发生错误。 更新现有信息时,不会出现任何问题。 在不使用代码的情况下将相同的信息放入数据库也没有问题。 测试代码不会试图同时存储相同的信息

映射文件

<class name="FileInfo" table="update_list" dynamic-update="true" >
    <cache usage="read-write"/>
    <id name="Name" type="string">
      <generator class="native" />
    </id>
    <property name="Version" />
    <property name="pkg" />
    <property name="UpdateDate" />
    <property name="Size" />
    <property name="Path" />
    <property name="AutoUpdate" type="TrueFalse" />
  </class>
保存部分

using (var db = Database.Open())
using (var trans = db.BeginTransaction())
            {
                FileInfo new_file = FileInfoDao.Get(db).GetBypkgName(postedFile.FileName);
                if (new_file == null)
                {
                    new_file = new FileInfo();
                }
                new_file.Name = postedFile.FileName;
                new_file.Size = postedFile.ContentLength;
                new_file.Path = filePath;
                new_file.UpdateDate = DateTime.Now;
                new_file.AutoUpdate = true;
                var info = apkHelper.GetInfo(filePath);
                new_file.pkg = info.Value.Item1;
                new_file.Version = info.Value.Item2;
                try
                {
                    db.SaveOrUpdate(new_file);
                    trans.Commit();
                }
                catch (Exception e)
                {
                    log.Error(e);
                }
}

你的名字就是你的PK,你定义

<generator class="native" />  

但是您设置了新的\u file.Name。。。试用

<generator class="assigned" />

选中所有选项:

<generator class="assigned" />