我期待獲得一些有關如何改進我的設計的反饋。具體來說,我不想爲每個域對象創建一個新的存儲庫對象,但我也不想一遍又一遍重寫會話和事務邏輯。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