我期待获得一些有关如何改进我的设计的反馈。具体来说,我不想为每个域对象创建一个新的存储库对象,但我也不想一遍又一遍重写会话和事务逻辑。Nhibernate体系结构 - 通用Nhibernate存储库可用于多种不同类型
为了缓解了需要编写的代码,以获得每个数据库事务我做我创建和通用的抽象类,看起来像这样一个新的会话和TRANSATION:
public class AbstractNHibernate<T> where T : class
{
public void Add<T>(T entity)
{
using(ISession session = NHibernateHelper.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(entity);
transaction.Commit();
}
}
}
那是伟大的,但后来我不得不为我的每个域实体创建一个存储库,如下所示:
public class ConnectionModel : AbstractNHibernate<Connection>
{
public void SaveConnection(Connection conn)
{
Add(conn);
}
}
我可能有很多这样的。有人可以提出一种不同的方法?
在此先感谢。
为什么所有的会话重新连接和断开? – dbones 2010-10-02 21:22:00
我有和dbones一样的问题。 – Nick 2010-10-03 02:10:24
没理由。每个动作周围的直接和明确的断开连接和重新连接都是来自DBA的一个策略要求,该DBA非常反ORM并试图压制整个概念。他被推翻了,但确实有足够的政治影响力来强加一些(通常是荒谬的)发展规则。对不起,任何混乱,一段时间后,它成为这样做事的习惯。 – Sisyphus 2010-10-03 17:56:31