普通多对多:
create table [Order]
(
OrderId int identity(1,1) primary key,
OrderDate datetime
)
go
create table Product
(
ProductID int identity(1,1) primary key,
Name varchar(50),
Cost float
)
go
create table OrderProduct
(
ID int identity(1,1) primary key,
Product int,
[Order] int
)
go
order.cs代码:
public class Order
{
public virtual int OrderId { get; set; }
public virtual DateTime OrderDate { get; set; }
//多对多关系:Order有多个Products
public virtual IList<Product> Products { get; set; }
}
Order.hbm代码:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NhibernateDomain" namespace="NhibernateDomain.Entites">
<class name="NhibernateDomain.Entities.Order,NhibernateDomain" table="`Order`" >
<id name="OrderId" column="OrderId" type="Int32" unsaved-value="0">
<generator class="native" />
</id>
<property name="OrderDate" column="OrderDate" type="DateTime" not-null="true" />
<!--多对多关系:Order有多个Products-->
<bag name="Products" generic="true" table="OrderProduct" cascade="all">
<key column="`Order`"/>
<many-to-many column="Product"
class ="NhibernateDomain.Entities.Product,NhibernateDomain"/>
</bag>
</class>
</hibernate-mapping>
如果是特殊多对多关系:
SQL代码:
create table [Order]
(
OrderId int identity(1,1) primary key,
OrderDate datetime
)
go
create table Product
(
ProductID int identity(1,1) primary key,
Name varchar(50),
Cost float
)
go
create table OrderProduct
(
ID int identity(1,1) primary key,
Product int,
[Order] int,
Acount int,
OPName varchar(30)
)
go
CS代码:
public class Order
{
public virtual int OrderId { get; set; }
public virtual DateTime OrderDate { get; set; }
public virtual IDictionary<OrderProduct, Product> Attributes { get; set; }
}
public class OrderProduct
{
public virtual Int32 Acount { get; set; }
public virtual String OPName { get; set; }
}
Order.hbm.xml代码:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NhibernateDomain" namespace="NhibernateDomain.Entites">
<class name="NhibernateDomain.Entities.Order,NhibernateDomain" table="`Order`" >
<id name="OrderId" column="OrderId" type="Int32" unsaved-value="0">
<generator class="native" />
</id>
<property name="OrderDate" column="OrderDate" type="DateTime" not-null="true" />
<map name="Attributes" table ="OrderProduct" cascade="all">
<key column="`Order`"></key>
<composite-index class="NhibernateDomain.Entities.OrderProduct,NhibernateDomain">
<key-property name="Acount"></key-property>
<key-property name="OPName"></key-property>
</composite-index>
<many-to-many class="NhibernateDomain.Entities.Product,NhibernateDomain" column="Product"></many-to-many >
</map>
</class>
</hibernate-mapping>
浙公网安备 33010602011771号