Я знаю, что вокруг есть много тем, но я пробовал все, что мог видеть некоторое время, но все еще не повезло.
У меня есть объект Item, который содержит коллекцию itemdocument,Используя nhibernate для связи с базой данных, я могу легко добавить в свою коллекцию itemdocument, обновить элементы в ней и т. Д., Но что бы я ни делал, я не могу удалить.
Я загружаю элемент из того же сеанса, который я пытаюсьудалить его из.Я даже добавил сеанс в качестве свойства объекта item и на всякий случай использую это свойство для его сохранения.
Если я использую Session.Delete () для itemdocument в коллекции, а затем яповторно сохраняя объект item (не удаляя itemdocument из коллекции), он фактически создает новый объект, чего и следовало ожидать.Так что это говорит мне, что мои Save работают.
Я надеюсь, что все это имеет смысл, я немного расстроен и, возможно, не так ясно, как я хочу ...
Смотрите мои отображениядля объекта item:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="namespace.Business.BusinessEntity">
<class name="Item, namespace" table="[dbo].[Item]">
<id name="ItemId" column="ItemId" type="Int32" unsaved-value="0">
<generator class="identity" />
</id>
<property name="ItemCode" column="ItemCode" type="String" length="50" />
<property name="InternalDescription" column="InternalDescription" type="String" length="254" />
<property name="IsEnabled" column="IsEnabled" type="Boolean" />
<property name="Size" column="Size" type="String" length="50" />
<set name="Pictures" cascade="all-delete-orphan" inverse="true" >
<key column="ItemId" not-null="true"/>
<one-to-many class="ItemDocument" />
</set>
</class>
</hibernate-mapping>
Отображение для объекта Itemdocument:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="namespace.Business.BusinessEntity">
<class name="ItemDocument, namespace" table="[dbo].[ItemDocument]">
<id name="ItemDocumentId" column="ItemDocumentId" type="Int32">
<generator class="identity" />
</id>
<property name="Order" column="[Order]" type="Int32" />
<many-to-one name="Item" class="Item" column="ItemId" not-null="true" />
<many-to-one name="Document" class="Document" column="DocumentId" cascade="save-update" not-null="true"/>
</class>
</hibernate-mapping>
Код для удаления:
//This does nothing
item.Pictures.Remove(item.Pictures.ElementAt(0));
session.SaveOrUpdate(item);
//This neither
session.Delete(item.Pictures.ElementAt(0));
item.Pictures.Remove(item.Pictures.ElementAt(0));
session.SaveOrUpdate(item);