【翻译】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二进制包以及模板设置你的解决方案。

  1. http://sourceforge.net/projects/nhibernate/files/ 下载NHibernate 3.0 二进制文件。文件名可能是 NHibernate-3.0.0 GA-bin.zip,或许在版本号上有一点不同。(译者:当前最新为 3.2.0 GA 2011-11-07)
  2. 在Visual Studio,创建一个新的C#类库项目,叫 Eg.Core,以及一个叫CookBook的解决方案目录。
  3. 删除Class1.cs文件。
  4. 在解决方案管理器中,右键单击CookBook解决方案,选择在Windows资源管理器中打开文件。这将打开Cookbook的资源管理器窗口。
  5. 在Cookbook文件夹中,创建一个新的文件夹,叫Lib。
  6. 从NHibernate 3 二进制压缩包中解压缩以下文件到Lib文件夹。

                   Required_Bin 文件夹中的所有文件

                   Required_For_LazyLoading\Castle文件夹下的所有文件(译者:3.2中已无需此项)

  7. 返回Visual Studio,右击解决方案,选择添加解决方案文件夹
  8. 命名为Schema。
  9. 右击Schema文件夹,选择添加现有项。
  10. 浏览Lib文件夹,添加两个文件:nhibernate-configuration.xsd 以及nhibernate-mapping.xsd。当文件打开的时候,仅仅是关闭它们。
  11. 你的解决方案就像下一个截屏:

image

 

 

详细步骤

现在让我们通过下面的步骤,开始创建我们的Product类

    1. 在Eg.Core,创建一个新的C#类,命名为Entity,使用下面代码。
using System;

namespace Eg.Core
{
    public abstract class Entity
    {
        public virtual Guid Id { get; protected set; }
    }
}
10
 
    1. 创建一个新的类,命名为Product,使用下面代码。  
namespace Eg.Core
{
    public class Product:Entity
    {
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
        public virtual decimal UnitPrice { get; set; }
    }
}
10
  1. 创建你的应用程序以及改正所有的编译错误。

 

下一步,让我们为我们的product类创建一个NHibernate映射。跟随下面步骤:

    1. 在解决方案窗口,右击你的项目,以及选择添加新项目。
    2. 在左边选择Data分类。
    3. 在右边选择XML文件。
    4. 命名为Product.hbm.xml。
    5. 在解决方案,右击Product.bm.xml,选择属性。
    6. 更改创建动作,从内容到嵌入式的资源。
    7. 在Product.hbm.xml的编辑器中输入下面代码。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Eg.Core" namespace="Eg.Core">
    <class name="Product">
        <id name="Id">
            <generator class="guid.comb" />
        </id>
        <property name="Name" not-null="true"></property>
        <property name="Description"></property>
        <property name="UnitPrice"></property>
10     </class>
11 </hibernate-mapping>
posted @ 2011-11-07 13:16  Margin22  阅读(414)  评论(0编辑  收藏  举报