博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NHibernate初学者指南(7):映射模型到数据库之方式三
阅读量:6156 次
发布时间:2019-06-21

本文共 2617 字,大约阅读时间需要 8 分钟。

XML映射

在VS中为NHibernate映射文件添加智能感知能力,需要添加.xsd文件。在项目中创建一个解决方案文件夹,名为Schema,添加两个XML schema定义文件:nhibernate-configuration.xsd和nhibernate-mapping.xsd到这个文件夹,如下图:

当为实体定义映射时,我们添加一个新的XML文件到项目中。这个文件的扩展名必须是.hbm.xml。作为文件名,建议使用映射的实体名,例如,当映射Product实体时文件名为Product.hbm.xml。如下图所示:

还要设置XML文件的BuildAction属性为Embedded Resource,如下图所示:

关于XML怎么配置的我就不写了,因为园子里有很多关于NHibernate配置的教程,这里只做一个例子。

实战时间—使用XML映射简单的模型

在这个例子中,我们创建一个非常简单的领域模型,并且使用XML映射它。然后让NHibernate基于这些映射文件生成SQL脚本。

1. 在VS中创建一个Console Application,名字为:XmlMappingSample。

2. 添加对NHibernate.dll的引用。

3. 在解决方案中新建一个解决方案文件夹Schema,并添加nhibernate-configuration.xsd和nhibernate-mapping.xsd两个文件。

4. 在项目中创建Domain文件夹,添加Customer, Order和LineItem类到该文件夹:

Customer类

namespace XmlMappingSample.Domain{    public class Customer    {        public virtual int Id { get; set; }        public virtual string CustomerName { get; set; }    }}

LineItem类

namespace XmlMappingSample.Domain{    public class LineItem    {        public virtual int  Id { get; set; }        public virtual int  Quantity { get; set; }        public virtual decimal UnitPrice { get; set; }        public virtual string ProductCode { get; set; }    }}

Order类

namespace XmlMappingSample.Domain{    public class Order    {        public virtual int Id { get; set; }        public virtual DateTime OrderDate { get; set; }        public virtual Customer Customer { get; set; }        public virtual IList
LineItems { get; set; } }}

5. 在Domain文件夹中新建一个XML文件,名为:Customer.hbm.xml,不要忘了该文件的BuildAction属性设置为Embedded Resource。其代码如下:

6. 同样的方式,创建LineItem.hbm.xml和Order.hbm.xml文件,代码分别如下:

 

7. 在Program类中添加如下using语句。

using NHibernate.Cfg;using NHibernate.Cfg.Loquacious;using NHibernate.Dialect;using NHibernate.Driver;using NHibernate.Tool.hbm2ddl;using XmlMappingSample.Domain;

8. 在Program类的Main方法中,创建NHibernate配置对象,如下面的代码所示:

var configuration = new Configuration();configuration.DataBaseIntegration(db =>{    db.Dialect
(); db.Driver
();});

9. 将所有的XML映射文件添加到配置:

configuration.AddAssembly(typeof(Customer).Assembly);

10. 添加下面的代码,创建并在控制台上显示SQL脚本:

var exporter = new SchemaExport(configuration);exporter.Execute(true, false, false);

11. 添加下面的代码避免程序不经确认就退出:

Console.Write("按回车退出:");Console.ReadLine();

12. 运行程序,控制台输出如下:

至此,三种映射模型的方式就讲完了,下一篇Sessions和Transactions。

转载于:https://www.cnblogs.com/nianming/archive/2011/11/15/2249917.html

你可能感兴趣的文章
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>