我們正在研究一個大型數據庫的Windows窗體.NET應用程序。目前我們達到了400個表格和業務對象,但這可能是整個應用程序的四分之一。如何在NHibernate中處理大量的映射文件
我現在的問題是,如何處理這個大量的與NHibernate的性能和內存使用情況的映射文件? 業務對象及其映射文件已在不同的程序集中分離。但我相信所有裝配的NH SessionFactory
將使用大量內存,性能將受到影響。但是,如果我只用程序集的一個子集構建不同的工廠(也許像是一個領域上下文,它將邏輯部分中的程序集分開),我無法輕鬆地在它們之間交換對象,只能訪問一部分對象。
我們目前的方法是利用上下文屬性來分隔業務對象。業務對象可以是多個上下文的一部分。創建SessionFactory
時,給定上下文(一個或多個)的所有映射文件都將合併爲一個大型映射文件,並在運行時編譯爲DLL。然後使用這個新的映射DLL創建Session
本身。
但這種方法有一些嚴重的缺陷:
- 開發商必須考慮業務對象組件之間的裝配引用的照顧;
- 開發人員必須處理上下文,否則NHibernate將無法找到類的映射;
- 創建新的映射文件很慢;
- 開發人員只能訪問當前上下文中的業務對象 - 任何其他訪問都會在運行時導致異常。
也許有一個完全不同的方法?儘管如此,我會很高興。
感謝您的回答。好的,我已經看過Fluent nHibernate,但臨時映射對我來說是新的。讓我們來看看 – MoJo2600 2010-09-12 16:44:28