webForumDet fria alternativet

Placering av transaction vid hämtning av data

.NET

1 svar · 446 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

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! :)

Medlem sedan juni 20003 076 inlägg
263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)