Quelqu'un sait-il pourquoi NHibernate ferait cela? Cela me semble ridicule et c'est (évidemment) planter mon application en essayant de mettre à jour la colonne de clé primaire. Voici ce qu'il fait.NHibernate émet INSERT et UPDATE de manière consécutive
D'abord, il insère un enregistrement:
INSERT INTO WidgetConfigurationPositions
(WidgetId,
TargetId)
VALUES (256 /* @p0 */,
'row1-column2' /* @p1 */)
select SCOPE_IDENTITY()
La déclaration très prochaine, il émet une mise à jour à ce record!
UPDATE WidgetConfigurationPositions
SET WidgetConfigurationId = null,
TargetId = null
WHERE WidgetConfigurationId = 96 /* @p0 */
AND Id = 302 /* @p1 */
Cher monsieur, pourquoi aurait-il fait cela? Voici la configuration pertinente pour cette entité:
<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>
Est-ce que j'ai manqué quelque chose dans ma configuration?
Comment appelez-vous le code qui provoque l'insertion et mise à jour? –