用MyGeneration模板生成NHibernate映射文件和关系

时间:2023-03-09 01:28:51
用MyGeneration模板生成NHibernate映射文件和关系

用我的MyGeneration模板生成NHibernate映射文件和关系(one-to-one,one-to-many,many-to-many)

MyGeneration的几个NHibernate模板功能已经很强,但还是存在些问题。例如:Guid主键支持不佳,代码不易修改,不支持中文注释等等。所以我决定自己来改写此模版。我把一部分通用的函数提取到自己定义的基类中,这样调试和修改都方便另外增加了一部分新功能。

NHibernate里面的关系写起来也很烦人,很容易出错,所以我写了另一个模版专门生成关系代码。只需要把生成的代码拷到映射类文件和.hbm.xml文件中就可以了。

下载
如果你兴趣自己写模版,或者使用中有问题可以查看强大的代码生成工具MyGeneration

使用中发现什么问题,或者是有什么好的意见建议请及时和我联系。十分感谢!

下载完成后把DDLLY.MyGenerationTemplate.dll拷贝到MyGeneration的安装路径。把模版文件拷贝到MyGeneration的安装路径下的Templates目录里面的NHibernate目录里。

生成映射文件

运行MyGeneration,选择Edit里面的Default Settings...,进行适当的配置。如图

用MyGeneration模板生成NHibernate映射文件和关系

在Template Browser里面的NHibernate找到"DDL NHibernate Object Mapping"。运行此模版

用MyGeneration模板生成NHibernate映射文件和关系

输出路径表示生成模版的生成路径。启用nullable类型表示在.Net2.0中使用nullable类型,如果。

提示:你可以按住Ctrl或者Shift选择多个表。

Save按钮可以把的你设置存储在注册表中,下次将自动获得保存的设置。

选中你需要生成映射类的表,点Ok按钮。将生成映射文件。你可以在输出路径中找到他们。

下面是我生成的文件

用MyGeneration模板生成NHibernate映射文件和关系/*
用MyGeneration模板生成NHibernate映射文件和关系/*NHibernate映射代码模板
用MyGeneration模板生成NHibernate映射文件和关系/*作者:DDL
用MyGeneration模板生成NHibernate映射文件和关系/*版本更新和支持:http://renrenqq.cnblogs.com/
用MyGeneration模板生成NHibernate映射文件和关系/*日期:2006年8月14日 
用MyGeneration模板生成NHibernate映射文件和关系*/
用MyGeneration模板生成NHibernate映射文件和关系using System;
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系namespace MyNamePlace
用MyGeneration模板生成NHibernate映射文件和关系{
用MyGeneration模板生成NHibernate映射文件和关系 /// <summary>
用MyGeneration模板生成NHibernate映射文件和关系 ///
用MyGeneration模板生成NHibernate映射文件和关系 /// </summary>
用MyGeneration模板生成NHibernate映射文件和关系    [Serializable]
用MyGeneration模板生成NHibernate映射文件和关系 public sealed class User
用MyGeneration模板生成NHibernate映射文件和关系 {
用MyGeneration模板生成NHibernate映射文件和关系 私有成员
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系 默认( 空 ) 构造函数
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系 公有属性
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系 公有函数
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系 重写Equals和HashCode
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系    }
用MyGeneration模板生成NHibernate映射文件和关系}
用MyGeneration模板生成NHibernate映射文件和关系

用MyGeneration模板生成NHibernate映射文件和关系<?xml version="1.0" encoding="utf-8" ?>
用MyGeneration模板生成NHibernate映射文件和关系<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
用MyGeneration模板生成NHibernate映射文件和关系 <class name="MyNamePlace.User,MyAssembly" table="T_User">
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系 <id name="UserId" column="UserId" type="Int32" unsaved-value="0">
用MyGeneration模板生成NHibernate映射文件和关系 <generator class="native"/>
用MyGeneration模板生成NHibernate映射文件和关系 </id>
用MyGeneration模板生成NHibernate映射文件和关系 <property column="UserName" type="String" name="UserName" not-null="true" length="64" />
用MyGeneration模板生成NHibernate映射文件和关系 <property column="Password" type="String" name="Password" not-null="true" length="32" />
用MyGeneration模板生成NHibernate映射文件和关系 <property column="Email" type="String" name="Email" length="64" />
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系 </class>
用MyGeneration模板生成NHibernate映射文件和关系</hibernate-mapping>
用MyGeneration模板生成NHibernate映射文件和关系

备注:
        我的数据库表名以"T_"开头,生成类时我会用"_"后面的内容。例如:T_Parent对应的类是Parent。如果你的表名中没有"_"。将会取表名做类名。
如果你在设计数据表时把字段的描述加上,生成的代码文件的注释中将会有属性的描述。

注意:在把他们加入Visual Studio后别忘了设置为嵌入的资源。

生成关系

在Template Browser里面的NHibernate找到"DDL NHibernate Relation Mapping"。运行此模版

用MyGeneration模板生成NHibernate映射文件和关系

选择你需要的表,需要的关系。点OK。

我们以双向的one-to-many为例

你可以看到下面的生成代码。

用MyGeneration模板生成NHibernate映射文件和关系//Parent
用MyGeneration模板生成NHibernate映射文件和关系<bag name="Childs" cascade="all" lazy="true" inverse="true">
用MyGeneration模板生成NHibernate映射文件和关系<key column="ParentId"></key>
用MyGeneration模板生成NHibernate映射文件和关系<one-to-many class="MyNamePlace.Child,MyAssembly"></one-to-many>
用MyGeneration模板生成NHibernate映射文件和关系</bag>
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系private IList m_Child=new ArrayList();
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系public IList Childs
用MyGeneration模板生成NHibernate映射文件和关系{
用MyGeneration模板生成NHibernate映射文件和关系get{return m_Child;}
用MyGeneration模板生成NHibernate映射文件和关系set{m_Child=value;}
用MyGeneration模板生成NHibernate映射文件和关系}
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系//Child
用MyGeneration模板生成NHibernate映射文件和关系<many-to-one name="Parent" column="ParentId"
用MyGeneration模板生成NHibernate映射文件和关系class="MyNamePlace.Parent,MyAssembly" />
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系private Parent m_Parent;
用MyGeneration模板生成NHibernate映射文件和关系
用MyGeneration模板生成NHibernate映射文件和关系public Parent Parent
用MyGeneration模板生成NHibernate映射文件和关系{
用MyGeneration模板生成NHibernate映射文件和关系get{return m_Parent;}
用MyGeneration模板生成NHibernate映射文件和关系set{m_Parent=value;}
用MyGeneration模板生成NHibernate映射文件和关系}

用MyGeneration模板生成NHibernate映射文件和关系

把他们拷贝到你生成的模版文件里面。“//Parent”后面的拷贝到Parent的映射类文件和.hbm.xml文件中。“//Child”后面的拷贝到Child的映射类文件和.hbm.xml文件中。

注意:需要把Child类和.hbm.xml里的ParentId去掉,不然会出现两个属性映射到一个字段的错误。

DDL NHibernate Relation Mapping模板使用注意:

    保持主外键的名称一致,比如T_Parent中主键名为ParetId,T_Child中与其参照的外键名也为ParentId。

    主表先选择,Parent-Child关系中先选择Parent,Person-Employee关系中先选择Person。

    多对多关系才会用到中间表下拉框。

其他的关系生成操作方法类似,我不再复述。

如果你对关联不是很熟悉请参见NHibernate的关联映射(one-to-one,one-to-many,many-to-many)以及cascade分析。本模版生成的文件都使用NHibernate的关联映射(one-to-one,one-to-many,many-to-many)以及cascade分析一文的典型设置。可以满足绝大部分的情况。当然你也可以适当修改后使用。
模版更新:

    增加了对Guid主键的支持,中文的注释,其他代码改善,部分代码提取到自定义的基类。