<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="TstDBConnection.Entities" assembly="TstDBConnection">
<class name="Product" table="Product">
<id name="Id" column="Id">
<generator class="guid.comb"/>
</id>
<property name="Name" column="Name"></property>
<bag name="Orders" generic="true" table="ProductOrder" cascade="save-update">
<key column="ProductId" />
<many-to-many column="OrderId" class ="Order" />
</bag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="TstDBConnection.Entities" assembly="TstDBConnection">
<class name="Order" table="[Order]">
<id name="Id" column="Id">
<generator class="guid.comb"/>
</id>
<property name="Name" column="Name"></property>
<bag name="Products" generic="true" table="ProductOrder" cascade="save-update">
<key column="OrderId" />
<many-to-many column="ProductId" class ="Product"/>
</bag>
</class>
</hibernate-mapping>
namespace TstDBConnection.Entities
{
public class Order
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Product> Products { get; set; }
}
}
namespace TstDBConnection.Entities
{
public class Product
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Order> Orders { get; set; }
}
}
public static void TestMany2Many(ISessionFactory sessionFactory)
{
using (ISession session = sessionFactory.OpenSession())
{
Product product = new Product() { Name = "A product" };
Order order = new Order()
{
Products = new List<Product>() { product },
Name = "Coffee CupBox"
};
var id = session.Save(order);
session.Flush();
}
}
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure(); // log4net
Configuration configuration = new Configuration();
configuration.Configure();
ISessionFactory sessionFactory = configuration.BuildSessionFactory();
TestMany2Many(sessionFactory);
sessionFactory.Close();
}
![](data:image/png;base64,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)