Bazı mülklerde IList olarak yeni nesneler içeren yeni bir nesnem var. Ben sql profiler iki ekleme sorguları yürütülürken görüyorum .. biri için yeni bir rehber kimliği olan ebeveyn için bir tane ve bir tane için çocuk, ancak, anne-babaya başvuran çocuğa yabancı anahtar, boş bir kılavuz. İşte ebeveyn benim haritalama geçerli:Niçin NHibernate çanta koleksiyonum, çocukların 'ebeveyn kimliği' ni dinamik olarak ayarlıyor?
<id name="BackerId">
<generator class="guid" />
</id>
<property name="Name" />
<property name="PostCardSizeId" />
<property name="ItemNumber" />
<bag name="BackerEntries" table="BackerEntry" cascade="all" lazy="false" order-by="Priority">
<key column="BackerId" />
<one-to-many class="BackerEntry" />
</bag>
Backer.cs sınıfında, ben
IList<BackerEntry>
ben varlık geçirilen SaveOrUpdate çalışırken BackerEntries özelliği tanımlı sql aşağıdaki sonuçlar elde profil:
exec sp_executesql N'INSERT İÇİNE Backer (Ad, PostCardSizeId, ItemNumber, BackerId) DEĞERLERİ (@ p0, @ p1, p2 @ @ p3) 'N' 'p0 nvarchar (3), @ p1 uniqueidentifier , @ p2 nvarchar (3), @ p3 benzersiz belirleyici ', @ p0 = N'qaa', @ p1 = 'BC95E7EB-5EE8-44B2-82FF3 0F5176684D '@ p2 = N'qaa', @ p3 = '18FBF8CE-FD22-4D08-A3B1-63D6DFF426E5'
exec Sp_executesql N'INSERT İÇİNE BackerEntry (BackerId, BackerEntryTypeId, Ad, Açıklama, MaxLength, IsRequired Öncelikli , BackerEntryId) VALUES (@ p0, @ p1, @ p2, @ p3, @ p4, @ p5, @ p0 benzersiz belirleyici, @ p1 benzersiz belirleyici, @ p2 nvarchar (5), @ p3 nvarchar (5), @ p4 int, @ p5 bit, @ p6 int, @ p7 benzersiz belirleyici ', @ p0 =' 00000000-0000-0000-0000-000000000000 ', @ p1 =' 2C5BDD33-5DD3-42EC-AA0E-F1E548A5F6E4 '@ p2 = N'qaadf', @ p3 = N'wasdf', @ p4 = 0 @ P5 = 1, @ p6 = 0, @ p7 = 'FE9C4A35-6211-4E17-A75A-60CCB526F1CA'
Gördüğünüz gibi, çocuğun BackerId için boş kılavuzunu üst öğenin yeni gerçek kılavuzuna sıfırlamıyor.
Son olarak, istisna atmak:
"NHibernate.Exceptions.GenericADOException: could not insert: [CB.ThePostcardCompany.MiddleTier.BackerEntry][SQL: INSERT INTO BackerEntry (BackerId, BackerEntryTypeId, Name, Description, MaxLength, IsRequired, Priority, BackerEntryId) VALUES (?, ?, ?, ?, ?, ?, ?, ?)] ---\u003e System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint
DÜZENLEME: ÇÖZÜLDÜ! Aşağıdaki ilk cevap beni doğru yöne işaret etti. Çocuk haritalaması ve sınıfına bu geri referansı eklemem gerekiyordu. Bu, tamamen .net bir şekilde çalışmasına izin verdi - ancak json'u kabul ederken, bir bağlantı kesildi, bu yüzden çocukları yeniden “takmak” için bazı ilginç kodlar bulmak zorunda kaldım.
Teşekkür ederim .. Beni doğru yönde işaret ettin ... Çocuk haritalamada arka referansa sahip değildim. – EvilSyn