mogę dać przykład, jak to zwykle warstwa z NHibernate dla architektury n-warstwowej:
Data Access warstwy
Przykład odwzorowania:
public class CategoryMap : ClassMap<Domain.Entities.Category>
{
public CategoryMap()
{
...
}
}
firmy warstwy
- Repositories: BaseRepository
Przykład repozytorium:
public class CategoryRepository : BaseRepository<Domain.Entities.Category>,
Domain.DataInterfaces.Business.Repositories.ICategoryRepository
{
public CategoryRepository(ISession session)
: base(session)
{
}
}
- BaseRepository (CRUD, GetById, getAll)
Przykład repozytorium podstawowego:
public class BaseRepository<T> : IBaseRepository<T>
{
public ISession Session { get; set; }
public BaseRepository(ISession session)
{
Session = session;
}
}
domeny warstwy
- DataInterfaces (IRepository, IBaseRepository)
- podmioty: BaseEntity
- Trwałość (IEntity, IBaseEnity)
Więc jedyna warstwa, która odwołuje NHibernate jest faktycznie warstwa danych i firmy (NHibernate.ISession
).Warstwa domeny jest współdzielona między wszystkimi warstwami i nie zna NHibernate. Dla uproszczenia można połączyć warstwę biznesową i danych w jedną warstwę. Zazwyczaj staram się je oddzielić, ale zależy to od wielkości projektu.
Jeśli naprawdę chcesz separacja, ja też proponujemy, aby rzucić okiem na dependency injection zmniejszenia zależności pomiędzy różnymi warstwami.
nadzieja, że pomaga.
Można przejść przez [link] (http://www.primaryobjects.com/cms/article119.aspx), która przedstawia najlepszy sposób projektowania aplikacji NHibernate przy użyciu warstwowej [Repository modelu] (http: // www. primaryobjects.com/cms/article119.aspx) – viento