写点什么

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

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

关注

评论

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

天猫精灵的自定义语音技能创建流程

汪子熙

人工智能 机器学习 机器人 机器人流程自动化 6月月更

静态路由,YYDS

wljslmz

网络工程师 6月月更 静态路由 路由协议

对话ACE第三期:数据库技术生态应如何构建

OceanBase 数据库

oceanbase

云图说丨应用宕机怎么办?MAS帮您实现业务无缝切换

华为云开发者联盟

云计算 MAS 宕机 多云高可用服务

对不起,我错了,这代码不好写

捉虫大师

Java Go sentinel 6月月更

磁盘I/O性能测试工具

穿过生命散发芬芳

6月月更 磁盘测试工具

科技成就伟大游戏 | 2022 亚马逊云科技游戏开发者大会

亚马逊云科技 (Amazon Web Services)

开发者 亚马逊云

ConcurrentLinkedQueue

急需上岸的小谢

6月月更

在线HTML转PERL工具

入门小站

工具

Django API 开发:Todo 应用的 React 前端

宇宙之一粟

django React API 6月月更

换个角度带你学C语言的基本数据类型

华为云开发者联盟

开发 C语言 数据类型位数

InfoQ 极客传媒 15 周年庆征文|深入理解 ELK 中 Logstash 的底层原理 + 填坑指南

悟空聊架构

运维 Logstash ELK 6月月更 InfoQ极客传媒15周年庆

【愚公系列】2022年06月 二十三种设计模式(十九)-观察者模式(Observer Pattern)

愚公搬代码

6月月更

MixNet解析以及pytorch源码

AI浩

人工智能 6月月更

Agora Web UIKit:快速构建视频通话或直播

devpoint

React 直播技术 视频通话

TemplateMethodPattern-模板方法模式

梁歪歪 ♚

设计模式

水果FL Studio最新20.9中文破解版下载

茶色酒

水果FL Studio

字节跳动一站式数据治理解决方案及平台架构

字节跳动数据平台

数据治理 元数据

常遇到读多写少,教你用ReadWriteLock实现一个通用的缓存中心

华为云开发者联盟

缓存 高并发 开发 ReadWriteLock

StrategyPattern-策略模式

梁歪歪 ♚

设计模式

安势信息加入Linux基金会OpenChain项目,助力软件供应链安全

安势信息

Linux 开源 DevSecOps SCA 开源软件

Fabric.js 圆形笔刷

德育处主任

canvas 前端可视化 Fabric.js 6月月更 前端画板

应用实践|Lifewit 数据平台基于Apache Doris的建设实践

SelectDB

数据库 数据仓库 apache doris SelectDB

linux之同时监控多个日志文件变化

入门小站

Linux

在线数字转成人民币大写

入门小站

工具

王者荣耀商城异地多活架构设计

踩着太阳看日出

架构训练营

leetcode 547. Number of Provinces 省份数量(中等)

okokabcd

LeetCode 搜索

ObserverPattern-观察者模式

梁歪歪 ♚

设计模式

2022 核心服务动手训练营

亚马逊云科技 (Amazon Web Services)

Amazon 亚马逊云

彰显个性│博客园的自定义主题

主题 可视化看板 6月月更

深入剖析 | HeartBeat方案的标准设计

九叔(高翔龙)

架构 dubbo 源码解析 HeartBeat 心跳设计

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