Har stött på lazy load problem med nhibernate och behöver er hjälp! :)
Får: failed to lazily initialize a collection, no session or session was closed
Har en klass som hämtar upp en användare, metoden ser ut:
private static Entities.User _currentUser;
public static Entities.User CurrentUser
{
get
{
if (_currentUser == null)
{
BLUser blUser = new BLUser();
_currentUser = blUser.GetByUserName(CurrentUserName);
}
return _currentUser;
}
}
Tidigare hade jag inte det privata fältet _currentUser utan jag hämtade från databasen varje gång vilket resulterade i många databasanrop (om metoden används flera gånger), jag fick dock inga fel på lazy loads då!
Nu med fältet tillagt så får jag lazy load error på en collection som användaren innehåller, Roles.
Utdrag ur mappningsfilen:
<class name="Entities.User, Entities" table="Users">
<id name="ID" column="UserID" type="System.Guid" unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid" />
</id>
<property name="UserName" column="UserName" type="String"/>
<bag name="Roles" lazy="true" cascade="delete" generic="true" table="UsersRoles">
<key column="UserID"/>
<many-to-many class="Entities.UserRole, Entities" column="RoleID"/>
</bag>
</class>
Rollerna vill jag ha lazy eftersom de inte används så ofta.
Jag har läst en del om lazy load men hittar inga bra exempel på lösningar!
Hur kommer jag undan felet?