【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

小红书笔记详情API:让内容创造更高效含代码

技术冰糖葫芦

API Explorer API 接口 API 策略

就业寒冬,最终拿到5个offer的一些经验分享

霍格沃兹测试开发学社

为了跳槽或提升自己,你会先学习哪一门编程语言?

小魏写代码

解读 Amazon Q | 用 AI 聊天机器人连接你与未来的无限可能

亚马逊云科技 (Amazon Web Services)

以守为攻,零信任安全防护能力的新范式

权说安全

零信任

网络安全等级测评师考试培训可以参考哪些资料?

行云管家

等保 等级保护 等保测评师

等保测评与信息安全管理体系认证的区别

行云管家

等保 等级保护 等保测评

一分钟了解JAVA语言

小齐写代码

Python笔记六之多进程

Hunter熊

Python 多进程

第42期 | GPTSecurity周报

云起无垠

软件测试岗位我是如何拿到5个offer的一些经验分享(附面试题)

测试人

软件测试 面试题

「飞桨星河社区创作者激励计划」全新上线!丰富权益,等你领取~

飞桨PaddlePaddle

百度 开发者社区 百度飞桨 星河社区 飞桨星河社区

面试八股文,自有其道理

老张

面试 专业能力

【一文读懂】基于Havenask向量检索+大模型,构建可靠的智能问答服务

阿里技术

向量检索 LLM 智能问答 Havenask 召回搜索引擎

你的隐私堪忧!彻底清空磁盘,只需要1行Python代码

程序员晚枫

Python 磁盘 隐私 Python自动化办公 自动化办公

MySQL自动删除binlog日志

百度搜索:蓝易云

MySQL 云计算 Linux 运维 云服务器

docker之Consul环境的部署

百度搜索:蓝易云

Docker 云计算 Linux 运维 Consul

如何定期清理数据库中的无效数据?

NineData

数据清理 数据归档 NineData 无效数据 优化数据库

超越基础设施:深度探讨平台工程的关键支柱

SEAL安全

架构 基础设施 平台工程

Java 包装类:原始数据类型与迭代器

小万哥

Java 程序人生 编程语言 软件工程 后端开发

利用阿里巴巴1688商品详情API:实现电商数据的快速整合

技术冰糖葫芦

API 接口 API 策略

人工智能(AI)+、+了什么?互联网+又是什么?

天津汇柏科技有限公司

互联网+ #人工智能

提升地理空间分析效率,火山引擎ByteHouse上线GIS能力

字节跳动数据平台

数据库 大数据

《鸟哥的Linux私房菜 基础学习篇 第四版》PDF

程序员李木子

立即注册 | 线上讲座:借助 NGINX Plus 优化物联网数据传输和应用安全

NGINX开源社区

TLS 物联网 IoT mqtt NGINX PLUS

20个Python random模块的代码示例

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟

开放原子开源大赛—基于OpenHarmony的团结引擎应用开发赛正式启动!

OpenHarmony开发者

高优异步任务解决双重异步集合点阻塞问题

FunTester

数据“隐领”未来!【隐私计算实训营】限时免费招募!

隐语SecretFlow

数据分析 数据安全 隐私计算

2D超写实数字人克隆的优势!

青否数字人

Dockerfile制作镜像与搭建LAMP环境

百度搜索:蓝易云

MySQL Apache Linux Dockerfile LAMP

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