2010-06-01 4 views
2

У меня есть простой NHiberntate Linq запрос:NHibernate.Linq: сеанс загрязняется после выбора

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

Момент ToArray() выполняется сеанс загрязняется (session.IsDirty() возвращается true). Если транзакция завершена, для каждого продукта создается SQL-запрос UPDATE.

Почему продукты, помеченные как грязные после простого SQL SELECT?

В этом проекте мы используем на следующие рамочные/инструменты:

  • .Net 3.5 + WPF
  • NHibernate 2.1.2 + FluentNHibernate
  • SQlite
  • PostSharp 1,5
+0

Это не проблема LINQ, но проблема отображения. Отправьте свое сопоставление, сущность и связанную схему базы данных. – Paco

ответ

3

эта проблема называется «Призрачный»

этот тест определит такого рода проблем: http://fabiomaulo.blogspot.com/2008/10/how-test-your-mappings-ghostbuster.html

это мое улучшение, немного более многословным, и, таким образом, это даст вам больше информации: http://jfromaniello.blogspot.com/2010/02/nhibernate-ghostbuster-version-11.html

+0

Спасибо, что это было. Я использовал простой SQL-скрипт для инициализации данных, а некоторые столбцы сопоставлены с свойствами int, где они инициализируются значением NULL. Ваш тест прошел, я думаю, это потому, что он проверяет только первую сущность каждого типа. –

Смежные вопросы