3

我有一些NHibernate的經驗,我正嘗試着手使用城堡Nhibernate設施或城堡NhibernateIntegration。我想知道,在哪裏可以找到如何在服務層(業務,類庫項目)中配置和執行事務控制(帶有屬性)的演示項目?沒有文檔,我很難找到一些開始使用的內容。如何配置NHibernate設施?

我在網上找到了一些樣本,但只有代碼段而不是演示項目...我想下載一些東西去學習。我沒有找到完整的解決方案,只是業務類(類庫)中的配置和事務控制。

對不起,這種線程在這裏,但我知道如何開始。

謝謝!

回答

0

如果你想看到溫莎城堡與NHibernate的集成一個完整的例子,然後我想看看Sharp Architecture

夏普是一個「最佳實踐」模板項目的嘗試,並利用一些高科技的(城堡和NHibernate的包括在內)。雖然它所做的一些事情可能不符合你的口味,但它會清楚地向你展示它可以融合在一起的其中一種方式。

如果你想查看底層發生了什麼,你可能需要去GitHub的源代碼倉庫中搜索,因爲夏普在模板項目中使用它自己的基類,這些基類是預編譯的(它仍然是開放的源,所以你可以看到發生了什麼,如果你想)。

當我將我的架構放在一起時,這對我來說是無價的幫助,我可以誠實地說,Castle和nHibernate是要走的路,所以您非常適合正確的道路。

編輯點評1:也許我在這裏有點困惑。根據城堡筆記

設施是擴展容器的主要方式。使用設施 可以將容器與外部框架(如WCF或NHibernate)集成,爲容器(如事件接線,事務支持...或組件(同步,可啓動 語義...))添加新功能。

據我所知,城堡Nhibernate設施和城堡NhibernateIntegration是設施,必須基於一個容器。

如果你想在沒有容器的情況下工作,那麼你需要使用某種形式的Singleton Factory來管理SessionFactory。有一個這樣的例子here

就控制交易的屬性而言,這就是夏普的做法(參見here)。你可能會重新使用這段代碼,並用你自己的Singleton替代NHibernateSession,如theirs

你不需要實現UnitOfWork,因爲nHibernate實際上是爲你做的。您真正需要的是一種架構,允許您在單一控制點(單例)中管理事務,並在每個存儲庫中都可用。

+0

我不能使用IoC容器,我的項目不允許使用它。我需要實現一些沒有IoC的東西。你知道我該怎麼做,我的意思是,只使用模式控制交易,我認爲UnitOfWork模式會很好,但我不知道如何才能阻止它。謝謝! –