惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - 没肉包子

Vim as Python IDE on windows 如何在windows下安装"The Eric Python IDE" - 没肉包子 一个新的轮回,一个新的开始 一名英格兰球迷眼里的本届英格兰队 强大的代码生成工具MyGeneration 请帮'Atlas'起个名字 - 没肉包子 - 博客园 NHibernate的关联映射(one-to-one,one-to-many,many-to-many)以及cascade分析 特里当选英格兰队新任队长 发疯的live.com NHibernate的Q&A(持续更新) NHibernate的调试技巧和Log4Net配置 诚邀博客链接 推荐两款在线日程(任务)管理的站点 NHibernate的数据库连接机制分析和如何使用外部连接 NHibernate的Session管理 有关NHibernate的问题请在此提出 [调查]如果你是个讲求编码规范的程序员,而碰到给变量、方法随意命名,注释又混乱的同事时你会怎么处理??? NHibernate的灵活配置 [转载]HTTP MIME类型即HttpResponse.ContentType属性值列表
用我的MyGeneration模板生成NHibernate映射文件和关系(one-to-one,one-to-many,many-to-many)
没肉包子 · 2006-08-23 · via 博客园 - 没肉包子

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

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

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

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

生成映射文件

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

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

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

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

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

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

下面是我生成的文件

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
    
<class name="MyNamePlace.User,MyAssembly" table="T_User">

        
<id name="UserId" column="UserId" type="Int32" unsaved-value="0">
            
<generator class="native"/>
        
</id>
        
<property column="UserName" type="String" name="UserName" not-null="true" length="64" />
        
<property column="Password" type="String" name="Password" not-null="true" length="32" />
        
<property column="Email" type="String" name="Email" length="64" />
        
    
</class>
</hibernate-mapping>

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

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

生成关系

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

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

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

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

把他们拷贝到你生成的模版文件里面。“//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。

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


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

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

     2006.8.24 修改部分bug

很多人反应模版使用问题,鉴于我这里没有.net1.0或者1.1的环境,所以把代码给出来,可以自己编译一个dll。

DDLNHibernateDotNetScriptTemplate

需要引用以下类库(都在MyGeneration的安装路径里):
Dnp.Utils.dll
DotNetScriptingEngine.dll
MyMeta.dll
PluginInterfaces.dll
Zeus.dll