AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议

华为云开发者联盟

云计算 华为 技术

BATJ内部Java求职面试宝典,尤其应届生如果还没有学过那后悔去吧,也许你已经错过N多家大厂offer;

Java架构师迁哥

图解 K8S 源码 - QoS 篇

郭旭东

Kubernetes Kubernetes源码

netfilter/iptables 原理

为为

Service Mesh Linux Kenel

华为丁耘,解读百尺竿头的中国5G

脑极体

随机森林原理介绍与适用情况(综述篇)

计算机与AI

数据挖掘 学习 数据科学 随机森林

极客时间架构师培训 1 期 - 第 4 周总结

Kaven

推荐一款MySQL开源客户端,免费+跨平台+使用便捷!

王磊

MySQL

「红黑树」背了又忘?深入本质,他也不过是一棵二叉树

小松漫步

详细分析定制企业应用的价格

Philips

敏捷开发 快速开发

UBBF2020:智能联接,共创行业价值新增长

DT极客

后疫情时代,华为云会议如何定义未来会议?

华为云开发者联盟

视频 会议

详细讲解:python中的lambda与sorted函数

计算机与AI

Python

Underlay网络:如何立住可靠又支持大规模无收敛的“人设”

华为云开发者联盟

云服务 交换机

容器技术为什么会这么流行

架构师修行之路

Docker 容器 分布式 微服务

打通Docker镜像发布容器运行流程

架构师修行之路

Docker 容器 分布式 微服务

OpenResty 项目脚手架

铁匠

lua nginx openresty

甲方日常 30

句子

工作 随笔杂谈 日常 心情

Kubeless 函数部署遇到了问题,如何 Debug? | 玩转 Kubeless

donghui

Serverless kubeless

技术心得丨一种有效攻击BERT等模型的方法

华为云开发者联盟

学习 AI

优秀开源项目、博客、书籍整理

铁匠

收藏教程 资源汇总

CECBC区块链专委会副主任吴桐主讲全国社保基金数字货币讲座

CECBC

区块链 数字货币

Anaconda安装使用和akshare库使用

MySQL从删库到跑路

Python 数据分析 Windows 10 Anaconda akshare

Tensorflow2.0安装使用

MySQL从删库到跑路

人工智能 tensorflow Anaconda Jupyter Notebook

远程触发Jenkins的Pipeline任务的并发问题处理

小Q

Java 学习 编程 架构 并发

华为云专家带你解读文本情感分析任务

华为云开发者联盟

内容 数据 分析

面向对象编程会被抛弃吗?这五大问题不容忽视

Java架构师迁哥

Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?

Python猫

Python 学习 编程 程序员

分配时间戳和生成水位线

小知识点

scala 大数据 flink

解释一下==和equals的区别,你以为就这么简单?那你就草率了

小Q

Java 学习 架构 面试 基础

腾讯技术官又曝神作,两份堪称‘千古绝唱’操作系统笔记现已被全网疯传

编程 操作系统 计算机

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