【翻译】NHibernate 3.0 CookBook (一)模块与映射 (一)
介绍
NHibernate是一个流行的、成熟的、开放源码的基于Java Hibernate项目的对象关系映射项目。类似于Linq to SQL、Entity Framework以及NHibernate的ORM,将数据库的表、列以及关键字之间的关系模型中转化为应用程序类与属性对象模型。
NHibernate的主页,http://NHFore.org, 包含博文、一个wiki,完善的帮助文档,以及一个bug跟踪器。通过NHUsers在Google的小组http://groups.goole.com/group/nhusers获得有效的支持。
NHibernate的源码在http://sourceforge.net/projects/nhibernate/ 。预编译的二进制包被发布在SourceForge上。
通过XML映射一个类
在所有新的NHibernate项目中,建议的第一步是映射模型。在这第一个例子中,我将展现给你如何映射一个新产品类。
准备
在我们开始映射之前,让我们设置Vsiual Studio解决方案。跟随下面几个步骤来利用NHibernate二进制包以及模板设置你的解决方案。
- 从http://sourceforge.net/projects/nhibernate/files/ 下载NHibernate 3.0 二进制文件。文件名可能是 NHibernate-3.0.0 GA-bin.zip,或许在版本号上有一点不同。(译者:当前最新为 3.2.0 GA 2011-11-07)
- 在Visual Studio,创建一个新的C#类库项目,叫 Eg.Core,以及一个叫CookBook的解决方案目录。
- 删除Class1.cs文件。
- 在解决方案管理器中,右键单击CookBook解决方案,选择在Windows资源管理器中打开文件。这将打开Cookbook的资源管理器窗口。
- 在Cookbook文件夹中,创建一个新的文件夹,叫Lib。
- 从NHibernate 3 二进制压缩包中解压缩以下文件到Lib文件夹。
Required_Bin 文件夹中的所有文件
Required_For_LazyLoading\Castle文件夹下的所有文件(译者:3.2中已无需此项)
- 返回Visual Studio,右击解决方案,选择添加解决方案文件夹
- 命名为Schema。
- 右击Schema文件夹,选择添加现有项。
- 浏览Lib文件夹,添加两个文件:nhibernate-configuration.xsd 以及nhibernate-mapping.xsd。当文件打开的时候,仅仅是关闭它们。
- 你的解决方案就像下一个截屏:
详细步骤
现在让我们通过下面的步骤,开始创建我们的Product类
- 在Eg.Core,创建一个新的C#类,命名为Entity,使用下面代码。
1 using System;
2
3 namespace Eg.Core
4 {
5 public abstract class Entity
6 {
7 public virtual Guid Id { get; protected set; }
8 }
9 }
10
- 创建一个新的类,命名为Product,使用下面代码。
1 namespace Eg.Core
2 {
3 public class Product:Entity
4 {
5 public virtual string Name { get; set; }
6 public virtual string Description { get; set; }
7 public virtual decimal UnitPrice { get; set; }
8 }
9 }
10
- 创建你的应用程序以及改正所有的编译错误。
下一步,让我们为我们的product类创建一个NHibernate映射。跟随下面步骤:
- 在解决方案窗口,右击你的项目,以及选择添加新项目。
- 在左边选择Data分类。
- 在右边选择XML文件。
- 命名为Product.hbm.xml。
- 在解决方案,右击Product.bm.xml,选择属性。
- 更改创建动作,从内容到嵌入式的资源。
- 在Product.hbm.xml的编辑器中输入下面代码。
1 <?xml version="1.0" encoding="utf-8" ?>
2 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Eg.Core" namespace="Eg.Core">
3 <class name="Product">
4 <id name="Id">
5 <generator class="guid.comb" />
6 </id>
7 <property name="Name" not-null="true"></property>
8 <property name="Description"></property>
9 <property name="UnitPrice"></property>
10 </class>
11 </hibernate-mapping>
本文来自博客园,作者:Margin22,转载请注明原文链接:https://www.cnblogs.com/skyler/articles/2239123.html
.Net Core QQ群:26555711
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律