Ik ben nog wat met NHibernate aan het spelen, en ik zit met het volgende:
Ik heb een class 'Customer' die een collectie heeft van 'Orders', en een Order bestaat dan weer uit OrderLines.
Als ik een nieuw Order wil ingeven, dan selecteer ik een Customer, add een nieuw order aan de customer, en voeg order-lines toe aan het order. Dan save ik de customer gewoon via een ISession.SaveOrUpdate().
De Sql die NHibernate genereert is dit:
Wat gewoon goed is.
Echter, ik zie ook dat deze query gegenereerd wordt:
Hierdoor loopt het boeltje natuurlijk mis.
Ik snap niet hoe hij erbij komt om dit te doen.
Ik heb een class 'Customer' die een collectie heeft van 'Orders', en een Order bestaat dan weer uit OrderLines.
Als ik een nieuw Order wil ingeven, dan selecteer ik een Customer, add een nieuw order aan de customer, en voeg order-lines toe aan het order. Dan save ik de customer gewoon via een ISession.SaveOrUpdate().
De Sql die NHibernate genereert is dit:
code:
1
2
3
| exec sp_executesql N'INSERT INTO tblOrder (CustomerId, OrderDate) VALUES (@p0, @p1); select SCOPE_IDENTITY()', N'@p0 int,@p1 datetime', @p0 = 2, @p1 = 'Mar 11 2006 5:10:50:000PM' exec sp_executesql N'INSERT INTO tblOrderLine (NumberOfItems, ItemPrice, ArticleId, OrderId) VALUES (@p0, @p1, @p2, @p3); select SCOPE_IDENTITY()', N'@p0 int,@p1 decimal(19,5),@p2 int,@p3 int', @p0 = 1, @p1 = 874.00000, @p2 = 2, @p3 = 5 |
Wat gewoon goed is.
Echter, ik zie ook dat deze query gegenereerd wordt:
code:
1
| exec sp_executesql N'UPDATE tblOrder SET Id = @p0 WHERE Id = @p1', N'@p0 int,@p1 int', @p0 = 2, @p1 = 5 |
Hierdoor loopt het boeltje natuurlijk mis.
Ik snap niet hoe hij erbij komt om dit te doen.
https://fgheysels.github.io/