Отображение NHibernate с помощью ConfORM - PullRequest
2 голосов
/ 28 октября 2011

У меня есть 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 Ответ

1 голос
/ 04 ноября 2011

Наконец-то я понял.Вот как я мог бы решить эту проблему, чтобы помочь кому-то еще:

        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>();
...