Ett filter är ju smidigt förståss!
http://weblogs.asp.net/srkirkland/archive/2009/09/03/asp-net-mvc-transaction-attribute-using-nhibernate.aspx
Enligt gurun Ayende så bör man använda transactions även vid hämtning av data med NHibernate men en sak jag såg idag när jag körde ett test var att min select körs utanför min transaction.
Detta har jag kommit fram till är för att jag använder Session.Query<T> när jag hämtar datat och jag gissar att transaktionen och Queryn inte körs vid samma tillfälle, så transaktionen hinner asvslutas innan queryn börjar, eller nått.
Min fråga som dök upp då är:
I vilket lager bör transaktioner placeras?
Nu har jag den i min serviceklass men det är uppenbarligen fel då metoden där i returnerar en IQueryable<T> vilket betyder att den kan modifieras vid senare tillfälle men ex. sortering, paging osv.
Med andra ord så bör den alltså ligga i controllern (mitt case gäller en asp.net mvc app), eller?
Men att ha den presentationslagret känns fel men det kanske det inte är? :stud
Alternativet är att inte returnera en IQueryable<T> från servicelagret men det är ju himla smidigt att göra det! :)