Ich spiele gerade mit der Klasse HybridSessionBuilder aus dem Blogbeitrag von Jeffrey Palermo herum:
http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
Mit dieser Klasse sieht mein Repository wie folgt aus:
public class UserRepository : IUserRepository
{
private readonly ISessionBuilder _sessionBuilder;
public UserRepository(ISessionBuilder sessionBuilder)
{
_sessionBuilder = sessionBuilder;
}
public User GetByID(string userID)
{
using (ISession session = _sessionBuilder.GetSession())
{
return session.Get<User>(userID);
}
}
}
Ist dies der beste Weg, um über die Verwaltung der NHibernate-Sitzung / Fabrik zu gehen? Ich habe etwas über Unit of Work und das Erstellen einer Sitzung pro Webanforderung und Flushing am Ende gehört. Soweit ich das beurteilen kann, tut meine derzeitige Implementierung nichts von alledem. Sie verlässt sich im Grunde auf das Repository, um die Sitzung aus der Sitzungsfabrik zu holen und sie zur Ausführung der Abfragen zu verwenden.
Gibt es bei dieser Art des Datenbankzugriffs irgendwelche Fallstricke?
1 Stimmen
Ich bin mir nicht sicher, ob es Fallstricke gibt, aber Sie können sich eine Implementierung des Unit-of-Work-Musters unter Verwendung von Rhino.Commons in Steve Bohlens www.autumnofagile.net...he ansehen: Building an MVC app with NHibernate, Windsor and Rhino.Commons... es ist eine tolle Serie