写点什么

连贯 NHibernate 有相应的 Wiki 文档了

  • 2009-02-11
  • 本文字数:979 字

    阅读完需:约 3 分钟

InfoQ 之前报道过,我们可以在 NHibernate 中使用 XML 映射,这就是连贯 NHibernate。连贯 NHibernate 使用连贯接口,通过编码的方式代替XML 定义映射。有些社区成员抱怨连贯NHibernate 缺乏相关文档,对此James Gregory 最近做出了回应,他发布了连贯NHibernate 的官方Wiki 文档

Wiki 文档中的包含如下例子:

Wiki 站点把典型的映射解决方案都列举出来了,当中包括 XML 和连贯 NHibernate。下面代码显示的是 XML 部分:

复制代码
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="QuickStart" assembly="QuickStart">
<class name="Cat" table="Cat">
<id name="Id">
<generator class="identity" />
</id>
<property name="Name">
<column name="Name" length="16" not-null="true" />
</property>
<property name="Sex" />
<many-to-one name="Mate" />
<bag name="Kittens">
<key column="mother_id"/>
<one-to-many class="Cat"/>
</bag>
</class>
</hibernate-mapping>

下面代码显示相同映射的连贯 NHibernate 代码:

复制代码
public class CatMap : ClassMap
{
public CatMap()
{
Id(x => x.Id);
Map(x => x.Name)
.WithLengthOf(16)
.Not.Nullable();
Map(x => x.Sex);
References(x => x.Mate);
HasMany(x => x.Kittens);
}
}

文章还提到:

尽管 XML 代码的部分比较优美,但是它可能会导致意想不到的结果。

接着,文中还列举了一些例子:

  • 由于编译器并不对 XML 进行估算,我们可以在映射中对未更新的类的多个属性进行重命名。在这种情况下,直到运行时才会发现解析映射的问题
  • XML 很冗长;NHibernate 逐步减低 XML 的强制元素,但我们仍不能避免 XML 的繁杂性
  • 重复的映射 - 如果我们不断地定义同样的规则,就会发现 NHibernate HBM 映射相当的冗长。例如,确保 string 属性为非空且长度为 1000 的时候,以及确保所有的 int 对象的默认值为 -1 的时候

去年的 8 月份,Oren Eini(也叫 Ayende Rahien ) 指出连贯的 NHibernate 并没有任何价值,因为每个实体必须有一个映射类。然而,从那时起,项目就进行革新,现在就有了自动映射的概念,这正是Ayende 所需要的。自动映射特性使用一套规则来自动映射所有实体,并非每个实体都需要映射类。

查看英文原文: Fluent NHibernate Has a Wiki

2009-02-11 22:021645
用户头像

发布了 87 篇内容, 共 24.9 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

EventBridge 集成云服务实践

阿里巴巴云原生

阿里云 云原生 事件总线 EventBridge 事件源

加密算法有哪几种?

InfoQ IT百科

动态重定位需要由什么来实现?

InfoQ IT百科

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

InfoQ IT百科

单调栈与栈的区别是什么?

InfoQ IT百科

计算单链表的长度。

InfoQ IT百科

进程主要由哪几个部分组成?

InfoQ IT百科

在Windows中,当一个应用程序窗口被关闭,该应用程序将会保留在哪里?

InfoQ IT百科

计算机操作系统最基本的特征是什么?

InfoQ IT百科

输入一个链表,输出该链表中倒数第k个结点。

InfoQ IT百科

图数据库|如何从零到一构建一个企业股权图谱系统

NebulaGraph

数据库 知识图谱

什么是分治算法?

InfoQ IT百科

数组去重的5种方法是什么?

InfoQ IT百科

玩转小程序压测

阿里巴巴云原生

小程序 阿里云 云原生 压测 PTS

CPU散热器是电脑标配吗?

InfoQ IT百科

阿里云数字化安全生产平台 DPS V1.0 正式发布!

阿里巴巴云原生

阿里云 云原生 数字化 安全生产平台

企业如何进行数字化转型?零代码简道云剑指「全民开发」新机遇

ToB行业头条

算法的五大特征是什么?

InfoQ IT百科

什么是“哈希算法”?

InfoQ IT百科

什么是完全二叉树?

InfoQ IT百科

消息传递通信的实现方式?

InfoQ IT百科

Plato Farm 的MARK 处于永远通缩,经济模型解析

西柚子

国厂自研的操作系统都有哪些?

InfoQ IT百科

递归算法的三个定律是什么?

InfoQ IT百科

什么是满二叉树?

InfoQ IT百科

如何判断两个字符串是否互为回文?

InfoQ IT百科

netty系列之:netty中常用的对象编码解码器

程序那些事

Java Netty 程序那些事 4月月更

给定两个字符串s和t,判断这两个字符串中的字母是不是完全一样。

InfoQ IT百科

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

InfoQ IT百科

数据结构和算法的关系?

InfoQ IT百科

易周金融观点 | 个人养老金制度正式出炉;居民贷款延期还款政策密集落地

易观分析

银行 养老金制度

连贯NHibernate有相应的Wiki文档了_.NET_Jon Arild Tørresdal_InfoQ精选文章