当我更新(使用flush)从数据库中检索的记录列表中的一条记录时,nHibernate正在对原始列表中的所有记录进行版本控制。
从数据库中检索记录列表:
using(UnitOfWork.Start())
{
queuedJobs = aJobServiceManager.GetAllJobs().Where(aJob => aJob.Status == PricingStatus.QUEUED).ToList();
}
/* Do some work on the record*/
using(UnitOfWork.Start())
{
//aJob is a record from queuedJobs.
aJobServiceManager.Save(aJob);
//When Flush is called I'm expecting only aJob to be updated in the database.
//aJob is correctly updated BUT
//All the other records in queuedJobs are also updated (their version field is incremented).
UnitOfWork.Current.Flush();
}
为什么nHibernate会在未更改时更新所有记录,如何阻止此行为?
答案 0 :(得分:9)
这很可能是您遇到的问题:http://nhibernate.info/blog/2008/10/20/how-test-your-mappings-the-ghostbuster.html
查看作业的映射文件会有所帮助。如果您正在做类似
的事情<property name="Status" type="int" />
Status
实际上StatusEnum
,你最终会出现重影。