---
title: "NHibernate + Repository"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/184676-nhibernate-repository"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2010-09-20T18:47:23.000Z"
updated: "2010-09-25T14:40:21.000Z"
replies: 4
views: 654
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/184676-nhibernate-repository"
---

# NHibernate + Repository

## #1 — doggelito, 2010-09-20T18:47Z

Jag har NHibernate i botten, på det har jag en Repositoryklass och ett IRepository interface.
Nu skulle jag vilja utöka mitt IRepository med NHibernates ISession (för i vissa situationer kan det vara bra att komma åt kärnan i NHibernate).
Men eftersom mitt IRepository är generiskt så kan jag inte lägga till NHIbernates ISession direkt i mitt interface så här:

```
public interface IRepository<TEntity, TId>
{
     ...
     NHibernate.ISession CurrentSession { get; }
}
```

för då har jag ju låst mitt interface till NHIbernate.
Ett alternativ är att istället returnera ett object så här:

```
public interface IRepository<TEntity, TId>
{
     ...
     object CurrentSession { get; }
}
```

```
public class NHibernateRepository<TEntity, TId> : IRepository<TEntity, TId>
{
     public object CurrentSession
     {
          get
          {
              return SessionFactory.GetCurrentSession();
          }
     }
}
```

men då måste jag typkonvertera så fort jag vill använda CurrentSession.
Det skulle ju funka, men om det går att undvika så är ju det bättre!

Kan jag på nått sätt wrappa NHIbernates ISession i en egen ISession på något konstigt sätt? :stud

Permalänk: https://www.webforum.nu/p/184676

## #2 — Nickemannen, 2010-09-20T19:59Z

Måste du använda dig av repositories?
Om jag säger att du lika gärna kan använda dig av session direkt utan repositories? :)
Skicka runt sessionfactory i dina servicar som du anropar getcurrent i :).

Permalänk: https://www.webforum.nu/p/2252342

## #3 — doggelito, 2010-09-21T06:28Z

Hehe, nej, det behöver jag väl egentligen inte. :)
Det har mest varit i utbildningssyfte som jag skapat mitt IRepository.

Om det inte går att lösa så kan jag i värsta fall, på de få ställen jag behöver NHibernates ISession, lägga en referens i min serviceklass.

Permalänk: https://www.webforum.nu/p/2252348

## #4 — Nickemannen, 2010-09-25T10:07Z

Mmm, jag tycker att ISession = Repository, eftersom den gör det ett repository skall göra ha logiken för att hämta spara osv.
Så att skicka in sessionfactory'n i serviceconstrutorn är det bästa =)

Permalänk: https://www.webforum.nu/p/2255264

## #5 — doggelito, 2010-09-25T14:40Z

Oki. Men hur blir det då med regeln som säger att man inte ska/bör ha "hårda" kopplingar mellan t.ex. servicelager och databaslager om jag skickar in sessionfactory i konstruktorn?
I det fallet blir jag väl heller inte hjälpt av att använda en IOC. 
Går det inte att ha det löst kopplat mellan sina delar om man använder nhibernate? :stud

Permalänk: https://www.webforum.nu/p/2255276

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/184676-nhibernate-repository
