Te puedo dar un ejemplo, la forma general I Layer con NHibernate para una arquitectura multicapa: capa
de acceso a datos
Ejemplo para un mapeo:
public class CategoryMap : ClassMap<Domain.Entities.Category>
{
public CategoryMap()
{
...
}
}
Capa empresarial
- Repositories: BaseRepository
Ejemplo para un repositorio:
public class CategoryRepository : BaseRepository<Domain.Entities.Category>,
Domain.DataInterfaces.Business.Repositories.ICategoryRepository
{
public CategoryRepository(ISession session)
: base(session)
{
}
}
- BaseRepository (CRUD, GetById, GetAll)
Ejemplo para un repositorio de la base:
public class BaseRepository<T> : IBaseRepository<T>
{
public ISession Session { get; set; }
public BaseRepository(ISession session)
{
Session = session;
}
}
Capa de dominio
- DataInterfaces (IRepository, IBaseRepository)
- entidades: BaseEntity
- Persistencia (IEntity, IBaseEnity)
Por lo tanto, la única capa que hace referencia a NHibernate es en realidad la capa de datos y el negocio (NHibernate.ISession
).La capa de dominio se comparte entre todas las capas y no conoce NHibernate. Para simplificar, podría fusionar el negocio y la capa de datos en una sola capa. Generalmente tiendo a separarlos, pero depende del tamaño del proyecto.
Si realmente desea la separación, yo también sugieren que echar un vistazo a dependency injection para reducir las dependencias entre las diferentes capas.
Espero que te ayude.
Puede ir a [este enlace] (http://www.primaryobjects.com/cms/article119.aspx) que ilustra la mejor manera de diseñar la aplicación NHibernate en capas utilizando [Modelo de repositorio] (http: // www. primaryobjects.com/cms/article119.aspx) – viento