我们正在研究一个大型数据库的Windows窗体.NET应用程序。目前我们达到了400个表格和业务对象,但这可能是整个应用程序的四分之一。如何在NHibernate中处理大量的映射文件
我现在的问题是,如何处理这个大量的与NHibernate的性能和内存使用情况的映射文件? 业务对象及其映射文件已在不同的程序集中分离。但我相信所有装配的NH SessionFactory
将使用大量内存,性能将受到影响。但是,如果我只用程序集的一个子集构建不同的工厂(也许像是一个领域上下文,它将逻辑部分中的程序集分开),我无法轻松地在它们之间交换对象,只能访问一部分对象。
我们目前的方法是利用上下文属性来分隔业务对象。业务对象可以是多个上下文的一部分。创建SessionFactory
时,给定上下文(一个或多个)的所有映射文件都将合并为一个大型映射文件,并在运行时编译为DLL。然后使用这个新的映射DLL创建Session
本身。
但这种方法有一些严重的缺陷:
- 开发商必须考虑业务对象组件之间的装配引用的照顾;
- 开发人员必须处理上下文,否则NHibernate将无法找到类的映射;
- 创建新的映射文件很慢;
- 开发人员只能访问当前上下文中的业务对象 - 任何其他访问都会在运行时导致异常。
也许有一个完全不同的方法?尽管如此,我会很高兴。
感谢您的回答。好的,我已经看过Fluent nHibernate,但临时映射对我来说是新的。让我们来看看 – MoJo2600 2010-09-12 16:44:28