普通多对多:

 
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>