NHibernate: One-to-Many一对多映射(VB.NET版)
点击次数:17 次 发布日期:2008-11-27 00:01:55 作者:源代码网
|
源代码网推荐 作者:飞鹰 源代码网推荐 源代码网推荐 ASP酷技术资讯网(www.ASPCool.com)版权所有,如转载,请保留此信息. 源代码网推荐 */ 源代码网推荐 源代码网推荐 终于使用NHibernate作为项目研究的ORM框架,这次研究只是为了证明一件事,那就是使用ORM后可以提高程序的开发效率和优化程序的结构。 源代码网推荐 源代码网推荐 由于CRUD都可以实现了,所以,我就参照张老三的文章来做One-To-Many的例子。这里我使用SQL Server自带的NorthWind中的两个表Customers,Orders来做例子,我把Customers类作为父类,Orders类作为子类。 源代码网推荐 源代码网推荐 我们先用Cool Coder生成XML文件和C#代码,再用C#2VB转换器把C#代码转变成VB代码(为什么要转来转去呢?等过几天有空了,我升级Cool Coder,使之也可以生成VB代码,先临时凑合着用吧!)。稍作修改后就可以得到下面的内容。 源代码网推荐 源代码网推荐 先看Customers的映射信息: 源代码网推荐 源代码网推荐 xml version="1.0" encoding="utf-8" ?> 源代码网推荐 源代码网推荐 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0"> 源代码网推荐 源代码网推荐 <class name="Customers, AssemblyName" table="Customers"> 源代码网推荐 源代码网推荐 <id name="CustomerID" column="CustomerID" type="String(5)"> 源代码网推荐 源代码网推荐 <generator class="assigned" /> 源代码网推荐 源代码网推荐 id> 源代码网推荐 源代码网推荐 <set name="Orders" inverse="true" lazy="true"> 源代码网推荐 源代码网推荐 <key column="CustomerID" /> 源代码网推荐 源代码网推荐 <one-to-many class="Orders, AssemblyName " /> 源代码网推荐 源代码网推荐 set> 源代码网推荐 源代码网推荐 <property name="CompanyName" type="String(40)" column="CompanyName" /> 源代码网推荐 源代码网推荐 <property name="ContactName" type="String(30)" column="ContactName" /> 源代码网推荐 源代码网推荐 <property name="ContactTitle" type="String(30)" column="ContactTitle" /> 源代码网推荐 源代码网推荐 <property name="Address" type="String(60)" column="Address" /> 源代码网推荐 源代码网推荐 <property name="City" type="String(15)" column="City" /> 源代码网推荐 源代码网推荐 <property name="Region" type="String(15)" column="Region" /> 源代码网推荐 源代码网推荐 <property name="PostalCode" type="String(10)" column="PostalCode" /> 源代码网推荐 源代码网推荐 <property name="Country" type="String(15)" column="Country" /> 源代码网推荐 源代码网推荐 <property name="Phone" type="String(24)" column="Phone" /> 源代码网推荐 源代码网推荐 <property name="Fax" type="String(24)" column="Fax" /> 源代码网推荐 源代码网推荐 class> 源代码网推荐 源代码网推荐 hibernate-mapping> 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Customers类的代码如下: 源代码网推荐 源代码网推荐 Imports System 源代码网推荐 源代码网推荐 Public Class Customers 源代码网推荐 源代码网推荐 Public Sub New() 源代码网推荐 源代码网推荐 End Sub "New 源代码网推荐 源代码网推荐 Dim m_orderList As IDictionary = New Hashtable 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 "* 源代码网推荐 源代码网推荐 "* Property OrderList ( IDictionary) 源代码网推荐 源代码网推荐 "* 源代码网推荐 源代码网推荐 Public Property Orders() As IDictionary 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return m_orderList 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As IDictionary) 源代码网推荐 源代码网推荐 m_orderList = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Private _Region As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property [Region]() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Region 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _Region = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _PostalCode As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property PostalCode() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _PostalCode 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _PostalCode = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _Fax As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property Fax() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Fax 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _Fax = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ContactName As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ContactName() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ContactName 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ContactName = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _City As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property City() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _City 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _City = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _CustomerID As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property CustomerID() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _CustomerID 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _CustomerID = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _Address As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property Address() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Address 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _Address = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ContactTitle As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ContactTitle() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ContactTitle 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ContactTitle = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _Phone As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property Phone() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Phone 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _Phone = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _CompanyName As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property CompanyName() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _CompanyName 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _CompanyName = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _Country As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property Country() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Country 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _Country = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 End Class "Customers 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Orders类的映射信息如下: 源代码网推荐 源代码网推荐 xml version="1.0" encoding="utf-8" ?> 源代码网推荐 源代码网推荐 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0"> 源代码网推荐 源代码网推荐 <class name="Orders, AssemblyName " table="Orders"> 源代码网推荐 源代码网推荐 <id name="OrderID" column="OrderID" type="Int32"> 源代码网推荐 源代码网推荐 <generator class="identity" /> 源代码网推荐 源代码网推荐 id> 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 <many-to-one name="Customers" column="CustomerID" class="Customers, AssemblyName "/> 源代码网推荐 源代码网推荐 <property name="EmployeeID" type="Int32" column="EmployeeID" /> 源代码网推荐 源代码网推荐 <property name="OrderDate" type="DateTime" column="OrderDate" /> 源代码网推荐 源代码网推荐 <property name="RequiredDate" type="DateTime" column="RequiredDate" /> 源代码网推荐 源代码网推荐 <property name="ShippedDate" type="DateTime" column="ShippedDate" /> 源代码网推荐 源代码网推荐 <property name="ShipVia" type="Int32" column="ShipVia" /> 源代码网推荐 源代码网推荐 <property name="Freight" type="Decimal" column="Freight" /> 源代码网推荐 源代码网推荐 <property name="ShipName" type="String(40)" column="ShipName" /> 源代码网推荐 源代码网推荐 <property name="ShipAddress" type="String(60)" column="ShipAddress" /> 源代码网推荐 源代码网推荐 <property name="ShipCity" type="String(15)" column="ShipCity" /> 源代码网推荐 源代码网推荐 <property name="ShipRegion" type="String(15)" column="ShipRegion" /> 源代码网推荐 源代码网推荐 <property name="ShipPostalCode" type="String(10)" column="ShipPostalCode" /> 源代码网推荐 源代码网推荐 <property name="ShipCountry" type="String(15)" column="ShipCountry" /> 源代码网推荐 源代码网推荐 class> 源代码网推荐 源代码网推荐 hibernate-mapping> 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Orders类的代码如下: 源代码网推荐 源代码网推荐 _ 源代码网推荐 源代码网推荐 Public Class Orders 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Sub New() 源代码网推荐 源代码网推荐 End Sub "New 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Private _OrderDate As System.DateTime 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property OrderDate() As System.DateTime 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _OrderDate 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.DateTime) 源代码网推荐 源代码网推荐 _OrderDate = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipName As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipName() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipName 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ShipName = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShippedDate As System.DateTime 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShippedDate() As System.DateTime 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShippedDate 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.DateTime) 源代码网推荐 源代码网推荐 _ShippedDate = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipPostalCode As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipPostalCode() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipPostalCode 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ShipPostalCode = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipCity As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipCity() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipCity 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ShipCity = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipAddress As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipAddress() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipAddress 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ShipAddress = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipCountry As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipCountry() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipCountry 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ShipCountry = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _OrderID As System.Int32 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property OrderID() As System.Int32 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _OrderID 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.Int32) 源代码网推荐 源代码网推荐 _OrderID = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _RequiredDate As System.DateTime 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property RequiredDate() As System.DateTime 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _RequiredDate 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.DateTime) 源代码网推荐 源代码网推荐 _RequiredDate = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _EmployeeID As System.Int32 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property EmployeeID() As System.Int32 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _EmployeeID 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.Int32) 源代码网推荐 源代码网推荐 _EmployeeID = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipVia As System.Int32 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipVia() As System.Int32 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipVia 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.Int32) 源代码网推荐 源代码网推荐 _ShipVia = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _Freight As System.Decimal 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property Freight() As System.Decimal 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Freight 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.Decimal) 源代码网推荐 源代码网推荐 _Freight = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _ShipRegion As System.String 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property ShipRegion() As System.String 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _ShipRegion 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As System.String) 源代码网推荐 源代码网推荐 _ShipRegion = value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 Public Property Customers() As Customers 源代码网推荐 源代码网推荐 Get 源代码网推荐 源代码网推荐 Return _Customer 源代码网推荐 源代码网推荐 End Get 源代码网推荐 源代码网推荐 Set(ByVal Value As Customers) 源代码网推荐 源代码网推荐 _Customer = Value 源代码网推荐 源代码网推荐 End Set 源代码网推荐 源代码网推荐 End Property 源代码网推荐 源代码网推荐 Private _Customer As Customers 源代码网推荐 源代码网推荐 End Class "Orders 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 下面给出调用代码,如下: 源代码网推荐 源代码网推荐 ExportSchema(New String() {"Customers.hbm.xml", "Orders.hbm.xml"}, False) 源代码网推荐 源代码网推荐 Dim s As ISession = sessions.OpenSession() 源代码网推荐 源代码网推荐 Dim t As ITransaction = s.BeginTransaction() 源代码网推荐 源代码网推荐 Try 源代码网推荐 源代码网推荐 Dim customer As New Customers 源代码网推荐 源代码网推荐 Dim order As New Orders 源代码网推荐 源代码网推荐 order.ShipCity = "GuangDong" 源代码网推荐 源代码网推荐 order.EmployeeID = 1 源代码网推荐 源代码网推荐 order.ShipVia = 2 源代码网推荐 源代码网推荐 order.Customers = customer 源代码网推荐 源代码网推荐 With customer 源代码网推荐 源代码网推荐 .Address = "Softwarepark" 源代码网推荐 源代码网推荐 .City = "Xian" 源代码网推荐 源代码网推荐 .CompanyName = "GPCT111" 源代码网推荐 源代码网推荐 .ContactName = "Tim" 源代码网推荐 源代码网推荐 .ContactTitle = "title" 源代码网推荐 源代码网推荐 .Country = "China" 源代码网推荐 源代码网推荐 .Region = "Asia" 源代码网推荐 源代码网推荐 .CustomerID = "023" 源代码网推荐 源代码网推荐 .Orders.Add(order, order) 源代码网推荐 源代码网推荐 End With 源代码网推荐 源代码网推荐 s.Save(customer) 源代码网推荐 源代码网推荐 t.Commit() 源代码网推荐 源代码网推荐 Catch ex As Exception 源代码网推荐 源代码网推荐 t.Rollback() 源代码网推荐 源代码网推荐 Throw ex 源代码网推荐 源代码网推荐 Finally 源代码网推荐 源代码网推荐 s.Close() 源代码网推荐 源代码网推荐 End Try 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 上面程序在我的机器上运行通过。 源代码网推荐 源代码网推荐 源代码网供稿. |
