NHibernate выдает INSERT и UPDATE последовательно - PullRequest
0 голосов
/ 04 июля 2010

У кого-нибудь есть идеи, почему NHibernate сделал бы это?Мне кажется это нелепым, и оно (очевидно) разбивает мое приложение, когда оно пытается обновить столбец первичного ключа.Вот что он делает.

Сначала вставляется запись:

INSERT INTO WidgetConfigurationPositions
           (WidgetId,
            TargetId)
VALUES     (256 /* @p0 */,
            'row1-column2' /* @p1 */)
select SCOPE_IDENTITY()

Следующее заявление, которое он выдает, - ОБНОВЛЕНИЕ этой записи!Господи, зачем это делать?Вот соответствующая конфигурация для этой сущности:

  <class name="Backplane.WidgetConfiguration, Backplane" table="WidgetConfigurations">
    <id name="Id" column="Id">
      <generator class="native" />
    </id>

    <property name="Name" column="ConfigurationName" />

    <map name="Widgets" table="WidgetConfigurationPositions" cascade="all" lazy="false" fetch="select">
      <key column="WidgetConfigurationId" />
      <index column="TargetId" type="string" />
      <one-to-many class="Backplane.WidgetPlacement"/>
    </map>
  </class>

  <class name="Backplane.WidgetPlacement, Backplane" table="WidgetConfigurationPositions">
    <id name="Id" column="Id">
      <generator class="native" />
    </id>

    <many-to-one name="Widget" class="Backplane.Widget, Backplane" column="WidgetId" lazy="false"  />
    <property name="Target" column="TargetId" />

    <map name="Options" table="PlacedWidgetOptions" cascade="all" lazy="false" fetch="select">
      <key column="WidgetConfigurationPositionId"/>
      <index column="OptionName" type="string" />
      <element column="OptionValue" type="string" />
    </map>
  </class>

Я что-то упустил в своей конфигурации?

Ответы [ 2 ]

3 голосов
/ 04 июля 2010

Это прекрасно задокументировано в http://nhibernate.info/doc/nhibernate-reference/collections.html#collections-onetomany (прочитайте последнее предложение)

2 голосов
/ 04 июля 2010

Я думаю, вам нужен обратный = true в классе виджетов.

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