NHibernate.Linq:select后会话变脏

时间:2010-06-01 09:55:17

标签: .net linq nhibernate

我有一个简单的NHiberntate linq查询:

var queryable = session.Linq<Product>().Where(p => p.Active);
Product[] products = queryable.ToArray();

执行ToArray()时,会话变脏(session.IsDirty()返回true)。如果提交了事务,则会为每个产品生成一个UPDATE SQL查询。

为什么在简单的SQL SELECT之后将产品标记为脏?

在这个项目中,我们使用以下框架/工具:

  • .Net 3.5 + WPF
  • NHibernate 2.1.2 + FluentNHibernate
  • SQlite
  • PostSharp 1.5

1 个答案:

答案 0 :(得分:3)

这个问题叫做“Ghost”

此测试将检测到此类问题: http://fabiomaulo.blogspot.com/2008/10/how-test-your-mappings-ghostbuster.html

这是我的改进,稍微冗长一点,因此它会为您提供更多信息: http://jfromaniello.blogspot.com/2010/02/nhibernate-ghostbuster-version-11.html