<?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();
}
