Отображение 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>();
Другие вопросы по тегам