Я занимаюсь разработкой веб-приложения в ASP.NET MVC с помощью NHibernate.
Исходя из статей и учебных пособий, которые я нашел в Google, я использую репозиторий для своих классов.
У меня 10 классов и 10 хранилищ. Сегодня я выяснил, что 90% моих репозиториев точно равны друг другу, кроме класса. Это один пример:
public class PromocaoRepository:IPromocaoRepository {
private ISession Session;
public PromocaoRepository() {
this.Session = NHibernateSessionFactory.OpenSession();
}
public void Add(Promocao promocao) {
using(ITransaction transaction = this.Session.BeginTransaction()) {
this.Session.Save(promocao);
transaction.Commit();
}
}
public void Edit(Promocao promocao) {
using(ITransaction transaction = this.Session.BeginTransaction()) {
this.Session.Update(promocao);
transaction.Commit();
}
}
public void Remove(Promocao promocao) {
using(ITransaction transaction = this.Session.BeginTransaction()) {
this.Session.Delete(promocao);
transaction.Commit();
}
}
public Promocao GetById(int id) {
return this.Session.Get<Promocao>(id);
}
}
Есть ли способ создать своего рода универсальное хранилище, которое я могу использовать во всех своих классах?
Если это возможно, что мне делать, если мне нужно создать конкретный метод для определенного класса?