Power Designer导出实体类和NHibernate xml文件

今天研究了一下通过PowerDesigner生成实体类和NHibernate所需要的xml文件,方法是通过Power Designer的向对象模型 (OOM) 导出并配置相关模板,具体操作步骤如下:

第一步:创建OOM

在PowerDesigner中创建面向对象模型 (OOM)。

我首先创建物理数据模型 (PDM),然后在 Tools → Generate Object-Oriented Model 做了转换。

第二步:配置导出实体模板文件

菜单位置:Language → Edit Current Object Language

General:C# 2::Profile\Attribute\Templates\definition

我对模板进行了简单修改,添加了一行空格和 { get; set; }。又对文件头和字段描述的格式做了修改。

DefaultHeader

位置在:C# 2::Profile\Classifier\Templates\DefaultHeader

写自己的代码:

// --------------------------------------------------------------------------------------------------------------------
// <copyright file="%sourceFilename%" company="">
// XXXX系统
// </copyright>
// <summary>
// %Comment%
// </summary>
// --------------------------------------------------------------------------------------------------------------------

[%comment%\n]\

位置在:C# 2::Profile\Shared\Templates\comment

写自己的代码:

/// <summary>
/// %CurrentLine%
/// </summary>

提示:在做类时只有把Comment字段填上,导出是才会有字段描述。

对命名空间进行配置,我直接写到了 source 里面感觉不是太合适。

C# 2::Profile\Classifier\Templates\source

现在就可以将实体导出了。

菜单位置:Language → Generate C# 2 Code

第二步:配置导出NHibernatedxml模板文件

这个是通过在网上查资料学来的,

感谢:Powerdesigner生成NHebernate的MAP文件

只是他没有附图,让人找不到位置,我也研究了一个下午才找到的,以下参数命名仍采用他的。

1.还是打开 Object Language Properties

菜单位置:Language → Edit Current Object Language

在 C# 2::Profile\Classifier\Generated Files ,创建一个 hbm.xml 文件。

Name: hbm.xml

FileName:%topContainerCode%.hbm.xml

Comment:

.if (%isGenerated%)

.set_object(_usingContext,,new)

[\ %NHebernateHead%\n]\

%NHebernateBody% \n

%NHebernateFoot%

.endif

%NHebernateBody%

2.设置%NHebernateBody%模板的内容

在 C# 2::Profile\Classifier\Templates ,新建一个模板 NHebernateBody

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="%Parent.path%" namespace="%Parent.path%">
<class name="%sourceFilename%" table="%sourceFilename%" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id> \n
.foreach_item(Attributes)
.if(%dataType% == "string")
<property name="%Code%" type="String">
<column name="%Code%" />
</property> \n
.endif
.if(%dataType% == "int")
<property name="%Code%" type="Int32">
<column name="%Code%" />
</property> \n
.endif
.next
</class>
</hibernate-mapping>

具体里面的配置我还没写好,需要再查帮助。

3.配置输出NHibernate的xml文件

在 C# 2::Profile\BasePackage\Templates\Visual Studio ,将模板修改为:

.// Declare classifiers of the package
.foreach_item(Classifiers,,,%IsShortcut%==false)
.if (%IsSelected%) and (%isInner% == false)
<File
RelPath = "%sourceFilePath%"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "%sourceFilePath%\\%topContainerCode%.hbm.xml"
BuildAction = "EmbeddedResource"
/>
.endif(\n)
.next
.// Declare classifiers of the subpackages
.foreach_item(Packages,,,%IsShortcut%==false)
.if (%isAssembly% == false)
%ProjectSourceFiles%
.endif
.next

NHibernate的xml配置完成。最后,一起导出实体和NHibernate的.xml文件

菜单位置:Language → Generate C# 2 Code

生成的两个文件:Customers.cs 和 Customers.hbm.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Customers.cs" company="">
//   XXXX系统
// </copyright>
// <summary>
//   账户信息
// </summary>
// --------------------------------------------------------------------------------------------------------------------
 
namespace XXXX.Domain.Model
{
   using System;
    
   /// <summary>
   /// 账户信息
   /// </summary>
   public class Customers
   {
       
      /// <summary>
      /// 账户ID
      /// </summary>
      public string customerId { get; set; }
       
      /// <summary>
      /// 账户名称
      /// </summary>
      public string customerName { get; set; }
       
      /// <summary>
      /// 性别
      /// </summary>
      public bool gender { get; set; }
       
      /// <summary>
      /// 地址
      /// </summary>
      public string address { get; set; }
       
      /// <summary>
      /// 电话号码
      /// </summary>
      public string phoneNumber { get; set; }
    
   }
}
<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="" namespace="">
<class name="Customers.cs" table="Customers.cs" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id>
<property name="CustomerId" type="String">
<column name="CustomerId" />
</property>
<property name="CustomerName" type="String">
<column name="CustomerName" />
</property>
<property name="Address" type="String">
<column name="Address" />
</property>
<property name="PhoneNumber" type="String">
<column name="PhoneNumber" />
</property>
</class>
</hibernate-mapping>

今天的学习只是找到了实现方法,想要把模板做好,还要再看看帮助。

不怎么会写博客,望前辈批评指正。

另外对使用CodeSmith导出实体类和NHibernate做了研究。模板下载:NHibernate模板 和 我自己写的模板

本篇文章Word下载

 
 
 

Power Designer导出实体类和NHibernate xml文件的更多相关文章

  1. xml文件生成方式一(字符串拼接,将多实体类对象写入xml文件)

    1.xml文件生成,拼接字符串使用StringBuffer或StringBuilder 2.拼接好后写入文件即可,将多个实体类写入xml文件 3.这种方式比较简单,但是操作也比较麻烦 4.下面是我的代 ...

  2. MyBatis从入门到精通:第一章实体类与Mapper.xml文件

    实体类: package tk.mybatis.simple.model; public class Country { public Long getId() { return id; } publ ...

  3. Java工具类_表结构自动生成对应的实体类、Mapper.xml文件、Dao类

    import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWrit ...

  4. powerdesigner 使用技巧 建模工具 导出sql 导出实体类 导出word

    显示comment列 Table Properties(表属性)=>Columns(列)=>Customize Columns and Filter(自定义列过滤) 勾上 comment ...

  5. MyBatis Spring整合配置映射接口类与映射xml文件

    本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...

  6. java 编程基础:注解(Annotation Processing Tool)注解处理器 利用注解解读类属性生成XML文件

    APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理. 使用APT工具 ...

  7. C#实体类序列化为XML

    这两天,应要求做一个C/S的小程序,考虑到程序简洁小巧,存数据的方式不使用数据库,而是直接存入XML文档中保存.为了把复杂实体类里面的属性存入XML,我们可以使用C#有的反射机制,做一个简单的通用工具 ...

  8. Mybatis generator自动生成代码包括实体,dao,xml文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  9. mybatis-generator数据库注释实体类生成以及generatorConfig文件配置

    项目里新建表时model,mapper以及mapper.xml基本都是用Mybatis Generator(以下简称为MBG)自动生成的,但是MBG自动生成的model的注释实在有点非人类,至少中国人 ...

随机推荐

  1. hdu1086(线段相交)

    题目意思: 给出n个线段,推断这n条线段中,线段相交的对数. http://acm.hdu.edu.cn/showproblem.php?pid=1086 题目分析: 此题主要写出推断线段相交的函数, ...

  2. swiftSingleton模式

    swift在几个方面Singleton模式: 1. 全局变量 private let _singleton = Singleton() class Singleton: NSObject { clas ...

  3. [dp] hdu 4472 Count

    意甲冠军: 鉴于n节点,满足子节点的相同的树节点号的同一层较少不同的形式. 思考: dp[i][j] 代表i节点.最后,一个层j方法节点 由于满足同层节点,所以j一层又一层必须是j 整数倍 所以就能得 ...

  4. lua学习笔记10:lua简单的命令行

    前面反复使用的命令行,好学喜欢命令行: 一 格公式 lua [options][script][args] 两 详细命令 -e 直接命令传递一个lua -l 加载文件 -i 进入交互模式 比例如.端子 ...

  5. 2014联合三所学校 (HDU 4888 HDU 4891 HDU 4893)

    HDU 4891 The Great Pan 注册标题  他怎么说,你怎么样  需要注意的是乘法时,它会爆炸int 代码: #include<iostream> #include<c ...

  6. vi使用高级

    下面的命令在vi命令模式被激活 h 光标左移一个字符 l 光标向右移动一个字符 j 光标下移一行 k 移动光标线 一.对整行操作 1.复制光标所在行 yy 2.删除光标所在行 dd 3.选中光标所在行 ...

  7. C语言库函数大全及应用实例八

    原文:C语言库函数大全及应用实例八                                            [编程资料]C语言库函数大全及应用实例八 函数名: kbhit 功 能: 检查 ...

  8. Cts分析框架(4)-添加任务

    Debug watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRmb290YmFsbA==/font/5a6L5L2T/fontsize/400/fill/ ...

  9. linux下的watch命令

    linux下的watch命令 在linux下,watch是周期性的执行下一个命令,并全屏显示执行结果. watch [-dhvt] [-n <seconds>] [--difference ...

  10. Linux下使用cat制作“内涵图”

    http://blog.csdn.net/odaynot/article/details/7939869