Отображение NHibernate с помощью ConfORM
У меня есть 2 класса (кратко изложено):
public class Product : Entity<Guid>
{
...
public virtual IList<Ingredient> Ingredients { get; set; }
public Product(){Ingredients = new List<Ingredient>();}
}
а также
public partial class Ingredient : Entity<int>
{
...
public virtual IList<Product> Products { get; set; }
public Ingredient(){Products = new List<Product>();}
}
У них есть отношения ManyToMany, и я хочу сделать:
- если я удаляю один ингредиент, продукт не удаляется, а только ингредиент для его списка.
- если я удалю один продукт, все ингредиенты будут удалены.
Я сделал эту карту, но я не могу заставить это работать.
orm.ManyToMany<Product, Ingredient>();
orm.Cascade<Product, Ingredient>(CascadeOn.DeleteOrphans);
1 ответ
Решение
Наконец то я понял. Вот как я мог бы решить эту проблему, чтобы помочь кому-то еще:
orm = new ObjectRelationalMapper();
mapper = new Mapper(orm);
//...
mapper.Class<Ingredient>(c =>
{
/* ...[MAP OTHERS PROPERTY]...*/
// Many to many relationship in One side
c.Bag(p => p.Products, pm => pm.Inverse(false), rel => rel.ManyToMany());
});
// Many to many relationship in other side
orm.ManyToMany<Product, Ingredient>();