NHibernate实例分享:Northwind Mapping
2009-10-04 00:07 李永京 阅读(7084) 评论(28) 编辑 收藏 举报NHibernate实例分享:Northwind Mapping
本节内容
说明
NHibernate的强大之处在于其映射,我们在设计Domain中,经常为各种各样的映射感到头痛,为此我把微软SQL Server2000自带的Northwind数据库使用NHibernate映射了一下,需要的请下载其代码,在文章中就不仔细说明了,一切都在代码中。
顺便说一句,其实映射不必这么复杂的写出全部:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="YourApp.Common.DataObjects.Address, YourApp" table="Address"> <id name="Id" type="Int32" unsaved-value="null"> <column name="Id" length="4" sql-type="int" not-null="true" unique="true" index="PK_Address"/> <generator class="native" /> </id> <property name="Address1" type="String"> <column name="Address1" length="255" sql-type="varchar" not-null="true"/> </property> <property name="Address2" type="String"> <column name="Address2" length="255" sql-type="varchar" not-null="false"/> </property> <property name="City" type="String"> <column name="City" length="255" sql-type="varchar" not-null="true"/> </property> <property name="State" type="String"> <column name="`State`" length="2" sql-type="varchar" not-null="true"/> </property> <property name="Zip" type="String"> <column name="Zip" length="12" sql-type="varchar" not-null="true"/> </property> <many-to-one name="Contact" class="YourApp.Common.DataObjects.Contact, YourApp"> <column name="Contact_Id" length="4" sql-type="int" not-null="false"/> </many-to-one> <bag name="BillToOrderHeaders" inverse="true" lazy="true" cascade="all-delete-orphan"> <key column="BillToAddress_Id"/> <one-to-many class="YourApp.Common.DataObjects.OrderHeader, YourApp"/> </bag> <bag name="ShipToOrderHeaders" inverse="true" lazy="true" cascade="all-delete-orphan"> <key column="ShipToAddress_Id"/> <one-to-many class="YourApp.Common.DataObjects.OrderHeader, YourApp"/> </bag> </class> </hibernate-mapping>
其实这样就可以了,不要把默认的都写上去的,我这个例子映射写的最简洁,大家下载看看吧
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="YourApp" namespace="YourApp.Common.DataObjects"> <class name="Address"> <id name="Id"> <generator class="native" /> </id> <property name="Address1" not-null="true" /> <property name="Address2"/> <property name="City" not-null="true"/> <property name="State" length="2" not-null="true"/> <property name="Zip" length="12" not-null="true"/> <many-to-one name="Contact" column="Contact_Id"/> <bag name="BillToOrderHeaders" inverse="true" cascade="all-delete-orphan"> <key column="BillToAddress_Id"/> <one-to-many class="OrderHeader"/> </bag> <bag name="ShipToOrderHeaders" inverse="true" cascade="all-delete-orphan"> <key column="ShipToAddress_Id"/> <one-to-many class="OrderHeader"/> </bag> </class> </hibernate-mapping>
代码
下载地址:http://code.google.com/p/yjinglee/downloads/list
参考资料
Microsoft: Northwind and pubs Sample Databases for SQL Server 2000
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库