写点什么

连贯 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:021664
用户头像

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

关注

评论

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

签约喜报 | 美秧集签约旺链科技,一物一码防伪溯源驱动品牌新增长

旺链科技

区块链 产业区块链 大米溯源

网络攻击盯上民生领域,应对DDoS和APT攻击,如何有效防御?

郑州埃文科技

IP地址 网络资产保护 网络攻击防御

从流量交换到共享联盟,开放银行如何助力金融数字转型?

CECBC

百问百答第39期:如何区分docker容器中的进程名称?

博睿数据

智能运维 Bonree Server 博睿数据

敏捷实践 | 做优先级排序时使用最多的三个模型

LigaAI

敏捷开发 优先级

Wallys/ Network_Card/2x 2 5G /High power Radio card

wallys-wifi6

QCA9882 802.11AX

集成底座内外网访问配置说明

agileai

k8s 集成底座 企业服务总线 身份管理平台 主数据平台

等保二级和等保三级的三大区别讲解-行云管家

行云管家

网络安全 等保 等级保护 等保2.0 等保二级

数据库厂家有哪些?排名怎么样?

行云管家

数据库 IT运维 运维审计 数据库审计

更全、更精准,美创科技实现Caché数据库M语言精细化审计

美创科技

cache 数据安全 数据库审计

netty系列之:在netty中使用TCP协议请求DNS服务器

程序那些事

Java Netty 程序那些事 5月月更

《Mybatis 手撸专栏》第9章:细化XML语句构建器,完善静态SQL解析

小傅哥

源码分析 小傅哥 源码学习 手写Mybatis 源码实践

玩转集群配置中心,一文带你了解 Taier 控制台

袋鼠云数栈

web前端培训js 私有属性的 6 种实现方式

@零度

web前端开发

从“预见”到“遇见” | SAE 引领应用步入 Serverless 全托管新时代

阿里巴巴云原生

阿里云 Serverless 云原生 SAE

AI简报-视频超分BasicVSR

AIWeker

人工智能 深度学习 视频超分 5月月更 AI简报

数字人民币智慧学生证来了,对于特定群体硬钱包或大有可为

CECBC

HttpRunner v4.0 正式发布:一文了解 v4.0 的前世、今生与未来

debugtalk

性能测试 HTTP 接口测试 测试工具 开源软件

推荐书籍-《持续行动-从想到到做到》

消失的子弹

书籍推荐

大数据培训数仓指标体系搭建

@零度

大数据开发

前端监控的搭建步骤,别再一头雾水了!

杨成功

架构 大前端 5月月更

国产CPU产业链的逻辑架构

Finovy Cloud

gpu 云服务器

TreeMap源码分析-新增

zarmnosaj

5月月更

Wallys/Network_Card/QCA9880/ 2x2 2.4G/5G FCC/CE

wallys-wifi6

802.11AX QCN9880

【直播预告】如何写好技术文章?开源技术写作入门与实践

TiDB 社区干货传送门

Python:什么是callable?

Ken

Python Callable

互联网通信安全之终端数据保护

融云 RongCloud

IOS技术分享| iOS快速生成开发文档(一)

anyRTC开发者

ios objective-c 音视频 移动开发 appledoc

leetcode 75. Sort Colors 颜色分类

okokabcd

LeetCode 排序

为应用赋能!博云容器云产品族正式发布

BoCloud博云

容器 云原生 容器云

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