Удалить только связь между таблицами, а не данные - PullRequest
0 голосов
/ 16 декабря 2011

Я использую NHibernate для подключения к БД для следующих классов:

Class A
{
   public int Id{get;set;}
   public List<B> InnerElements{get;set;}

}

Class B
{
   public int Id{get;set;}
   public string Description{get;set;}
   ...no reference to the parent
}

и в БД у меня есть таблицы As (для класса A), Bs (для класса b) и ABs, где таблица AB имеет автоинкрементный идентификатор и идентификаторы сущностей A и B.

Файлы конфигурации для классов:

Класс А

...other properties mapped
<bag name="InnerElements" table="ABs" cascade="all" inverse="true">
      <key column="AID" />
      <many-to-many class="B" column="BID"/>
    </bag>

и в классе B я не имею никаких ссылок на класс A.

Когда я удаляю элемент B из InnerElements из сущности типа A и пытаюсь сохранить / обновить измененную сущность обратно в БД, внутренняя таблица AB остается неизменной. Как я могу изменить (в файлах конфигурации или иным образом), чтобы удалить запись из внутренней таблицы? Я не хочу удалять любые записи A или B из БД.

Заранее спасибо, Тамаш

1 Ответ

1 голос
/ 16 декабря 2011

Удалить inverse="true". Этот атрибут, который выглядит как копия и вставка, означает, что вы обрабатываете отношение со стороны другой , которая в данном случае не существует.

...