NHibernate, 存档

迁移到 nhibernate 2。0

在基于 nhibernate 的项目中工作时, nhibernate 文档通常非常方便。我将文档的 pdf 副本保存到 nhibernate 1.0 和1.2 在我的硬盘驱动器上, 因为我永远不知道何时需要引用它们。不幸的是, nhibernate 队似乎在2.0 版方面丢球了。nhibernate 网站不仅缺乏关于2.0 版的任何文档, 该网站的行为就好像2.0 版甚至还没有发布。与以前对框架的更新不同, 2.0 版表示对代码库的完全重构, 许多命名空间和对象已删除或重命名。尽管缺少官方文档, 但仍有多种资源可帮助您将现有的 nhibernate 1.2 应用程序迁移到 nhibernate 2.0。

重大更改的列表

nhibernate 论坛有一个主题, 讨论1.2 版和2.0 版的 alpha 预发行之间的重大更改。对于完整的列表, 请查看论坛, 但这里是您最有可能面临的。

 

问题: nhibernate. 表达式命名空间不再存在。

概述: 以前保存在此命名空间中的最值得注意的项是创建 icriteria 时使用的表达式对象。幸运的是, 这个物体仍然存在于 nhibernate 中。

解决方案: 替换所有 "正在使用" 的语句以反映命名空间的更改。

使用 nhbernna。这条线路不再需要在 nh 2。0
使用 nhbernate. 标准;   用这条线代替它。

 

问题: 不再使用 n触及配置部分 (很可能在 web. config 或 app. config 中)。

概述: nhibernate 2.0 不再查看名为 nhibernate 的配置部分, 而是查找名为 "休眠配置" 的配置部分 (请注意休眠中缺少 "n" 个)。此外, 配置部分不是简单地重命名的, 它承载着完全不同的架构。

解决方案: 简而言之, 整个配置部分将需要稍微重新设计。

首先, 您的配置部分声明必须更改其名称和类型:

<configuration></configuration> <configSections></configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirepermission="false"></section> read more

C#, NHibernate, 存档

nhibernate 配方属性

nhibernate 的一个经常被忽视的特点是公式属性的使用。公式属性是不映射到数据库中的列, 而是使用原始 sql 查询映射的属性。

公式在 nhibernate 映射文件中使用与普通属性相同的属性元素进行映射, 只需替换公式关键字的列关键字即可。

<property name="FormulaPropertyName" formula="SQL STATEMENT"></property> 

基本思想是, 当 nhibernate 加载对象时, 它将同时颁发自定义 sql, 从而允许复杂的只读属性将其工作卸载到数据库中。

例如, 假设您有一个表示电子商务网站上订单的类。订单通常由行项目组成, 一个常见的问题是作为一个整体问订单 "你的小计是什么?" 在不权衡利弊的情况下, 假设您不想小计作为字段存储在订单表中。

一个完全可以接受的解决方案是具有这样的只读属性:

公共十进制子总计 { 获取 { 十进制小总计 = 0; 在这里。线项目) { 小道达尔 + = 李。延长价格;即, 单位订购的时间单价。 } 返回小计; } } read more