2011-05-17 220 views
0

我遇到了NHibernate的问题。我在NHibernate Profiler中发现了这个问题。当我尝试在表中插入新记录它触发表中每条记录的更新语句。 就像我在数据库中有1000条记录插入或更新数据库中每条记录的触发更新语句一样。Nhibernate:插入新记录更新表中的所有现有记录

这里是我的样品 这是我的HBM文件和示例代码

<property name="ParentCodeId" column="Parent_Code_ID" not-null="false" /> 
<property name="Code" column="Diagnostic_Code" not-null="false" /> 
<property name="Descr" column="Description" not-null="true" /> 
<property name="Level" column="Level" not-null="true" /> 
<property name="CreatedBy" column="Created_By" not-null="true" /> 
<property name="CreatedDate" column="Created_Date" not-null="true" /> 
<property name="ModifiedBy" column="Modified_By" not-null="false" /> 
<property name="ModifiedDate" column="Modified_Date" not-null="false" /> 
<property name="IsActive" column="Is_Active" not-null="true" /> 

var repository = this.DomainObjectRepositoryFactory.Create<DiagnosticCodeRepository, DiagnosticCode>(); 
repository.BeginTransaction(); 
diagnosticCode.Id = data.DiagnosticCodeId; 
diagnosticCode.ParentCodeId = data.ParentCodeId; 
diagnosticCode.Code = data.Code; 
diagnosticCode.Descr = data.Descr; 
diagnosticCode.IsActive = data.IsActive; 
diagnosticCode.Level = data.Level; 

// save Diagnostic code 
id = repository.Save(diagnosticCode); 
repository.Commit(); 

任何想法?

感谢 伊姆兰

+1

你应该发布一些代码才能更好地理解 – 2011-05-17 15:49:07

+0

你可以显示触发的更新语句吗? – psousa 2011-05-18 09:11:25

回答

0

diagnosticCode一个新的对象?

我不知道这是否是您的问题,但如果您将对象拉出数据库,进行更改并保存,您可能会有更好的运气。您不需要手动设置对象的id属性。