Коллекции NHibernate: отношения многие ко многим - PullRequest
0 голосов
/ 14 июня 2010

У меня есть две модели, модель продукта и модель ShoppingCart. Модель ShoppingCart имеет коллекцию товаров в виде свойства под названием Продукты (Список). Вот схема для моей модели ShoppingCart.

<class name="MyProject.ShoppingCart, MyProject" table="ShoppingCarts">
  <id name="Id" column="Id">
    <generator class="native" />
  </id>

  <many-to-one name="Company" class="MyProject.Company, MyProject" column="CompanyId" />
  <property name="ExternalId" column="GUID" generated="insert" />
  <property name="Name" column="Name" />
  <property name="Total" column="Total" />
  <property name="CreationDate" column="CreationDate" generated="insert" />
  <property name="UpdatedDate" column="UpdatedDate" generated="always" />

  <bag name="Products" table="ShoppingCartContents" lazy="false">
    <key column="ShoppingCartId" />
    <many-to-many column="ProductId" class="MyProjectMyProject.Product, MyProject" fetch="join" />
  </bag>
</class>

Когда я пытаюсь сохранить в БД, ShoppingCart сохраняется, но строки сопоставления в ShoppingCartContents не сохраняются, поэтому я понимаю, что с отображением есть проблема. Куда я здесь не так?

Ответы [ 2 ]

0 голосов
/ 14 июня 2010

Вам следует внести изменения в транзакцию, иначе nhibernate не сохранит изменения в коллекциях.

0 голосов
/ 14 июня 2010

Добавить свойство каскада в сумку

<bag name="Products" table="ShoppingCartContents" lazy="false" cascade="all">

Существует несколько вариантов каскада из NH doc:

cascade="all|none|save-update|delete|all-delete-orphan" 

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...