2012-08-31 2 views
0

У меня есть элементы Orders, Items и OrderItems с отношением n: n между таблицей Orders и Items. Я использую Fluent Hibernate для сопоставления, в сущности «Заказ» есть свойство «Список», которое имеет «защитный набор». Я столкнулся с проблемой ниже, при вставке.Вставка с использованием NHibernate для отношения n: n

new Order.Items.Add(alreadyexistingitem); 

С момента своего уже существующего элемента в таблице ТоварыЗаказа запись должна быть вставлена ​​в таблицу ТоварыЗаказа с новым OrderID и существующий пункт ид. Но только новые данные заказа вставляются в таблицу заказа не в ассоциативную таблицу.

Атрибут «Инверсия» устанавливается для мешка «предметы» в сущности заказов. Итак, мне нужно прикрепить добавленный порядок при добавлении элемента, как показано ниже, но как я могу это сделать, поскольку это объект списка с защитным набором.

Orders.Items.Add(alreadyexistingitem, *order = "neworder"*); 

Ниже отображение:

model.Override<Order>(m => 
    {  

        m.HasManyToMany(c => c.Items) 
         .Table(Constants.TABLE_PREFIX + "OrderItem") 
         .Inverse() 
         .Cascade.AllDeleteOrphan(); 
    }); 



    model.Override<Item>(m => m.HasManyToMany(c => c.Orders) 
              .Table(Constants.TABLE_PREFIX + "OrderItem") 
              .Cascade.None()); 
+0

Можете ли вы показать нам сопоставление, которое вы используете в настоящее время? Это, вероятно, пролило бы больше света на основную причину, чем использование сопоставленного объекта. – KeithS

+0

Добавлены сопоставления ... – Sunny

ответ

2

В качестве предварительного ответа, NHibernate достаточно умен, чтобы знать, когда ссылка же объект используется в двух местах. Все, что вам нужно, это отношение «HasManyToMany» при сопоставлении между Order and Item.

Обратный, вероятно, не должен использоваться на стороне заказов. Обратный говорит NHibernate, что противоположная сторона отношения имеет право определять и нарушать отношения. Заказы имеют предметы; предметы не могут «выбрать», к какому приказу они принадлежат.

+0

Я думаю, что у меня есть отображения? – Sunny

+0

Спасибо Keith, элементы получают вставку в таблицу orderitems. Я все еще пытаюсь понять об атрибуте «обратный». – Sunny

+0

У меня такое же сомнение в отношении 1: n, скажем, у меня есть объекты Customer и Order. Таким образом, объект порядка имеет обратный атрибут coz-порядок не может существовать без клиента, например *** model.Override (m => m.References (c => c.Customers) .Inverse() .Cascade.None()); – Sunny

Смежные вопросы