Вопрос

I have gotten into a problem with my project. I am using a generic repository with structure map together with Fluent NHibernate. Everything works rather well, but when it comes to transactions and session management I have really no clue what to do. I have looked around for answers but I cant really find anything that fit my needs.

What I do in my application is that I let structure map instantiate a repository class when it gets a request for it, like so:

internal class RepositoryRegistry : Registry
{
    public RepositoryRegistry()
    {
        For<IRepository<User>>().Use<Repository<User>>();
        For<IRepository<Tasks>>().Use<Repository<Tasks>>();
    }
}

internal class NHibernateRegistry : Registry
{
    public NHibernateRegistry()
    {
        For<ISessionFactory>()
            .Singleton()
            .Use(() => new NHibernateSessionFactory().GetSessionFactory());

        For<ISession>()
            .Singleton()
            .Use(x => x.GetInstance<ISessionFactory>().OpenSession());
    }
}

public interface IRepository<T>
{
    T GetById(int id);

    void SaveOrUpdate(T entity);

    IList<T> GetAll();

    IQueryable<T> Linq();

    void Add(T entity);

}

Edit: I have concluded what I need. I wan't to use the unit of work pattern along with structure map, but I also want to have some kind of repository wrapper which can be accessed through a unit of work.

Thanks, James Ford

Нет правильного решения

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top