0
私は、多くの値をとり、必要に応じてデータベース内のレコードを更新/作成するSubを持っています。複数のアタッチ/挿入後のLINQからの戻りID
Public Sub BatchChange(ByVal Updated As List(Of Article), ByVal Created As List(Of Article), ByVal Deleted As List(Of Article), ByVal UserId As Integer)
Dim d As DateTime = Now
For Each Art As Article In Deleted
Art.Deleted = True
Art.ChangeDate = d
Art.ChangeCount += 1
DB.Articles.Attach(A, True)
Next
For Each Art As Article In Created
Art.ChangeDate = d
Art.ChangeCount = 1
Art.ModifierUserId = UserId
DB.Articles.InsertOnSubmit(A)
Next
For Each Art As Article In Updated
Art.ChangeDate = d
Art.ChangeCount += 1
Art.ModifierUserId = UserId
DB.Articles.Attach(A, True)
Next
DB.SubmitChanges()
End Sub
は今、この順番にREST-APIを介して、他のデータベースと同期する必要があり、私の現在の問題は、「作成した」モデル内の各ためです。
Public Sub BatchChange(ByVal Updated As List(Of Article), ByVal Created As List(Of Article), ByVal Deleted As List(Of Article), ByVal UserId As Integer)
Dim d As DateTime = Now
Dim SyncList As New List(Of SyncParam)
For Each A As Article In Deleted
A.Deleted = True
A.ChangeDate = d
A.ChangeCount += 1
DB.Articles.Attach(A, True)
SyncList.Add(New SyncParam(A.ClientId, A.ArticleId))
Next
For Each A As Article In Created
A.ChangeDate = d
A.ChangeCount = 1
A.ModifierUserId = UserId
DB.Articles.InsertOnSubmit(A)
SyncList.Add(New SyncParam(A.ClientId, A.ArticleId))
Next
For Each A As Article In Updated
A.ChangeDate = d
A.ChangeCount += 1
A.ModifierUserId = UserId
DB.Articles.Attach(A, True)
SyncList.Add(New SyncParam(A.ClientId, A.ArticleId))
Next
DB.SubmitChanges()
For Each Value In SyncList
API.Util.APISync(Value.ClientId, Value.ArticleId)
Next
End Sub
そして、私は他のデータベースとそれを同期するし、それを検索しての無駄を期待してDB.SubmitChanges後にリストをループしてるので、私は記事のために作成したIDが必要です。
しかし、明らかにこの方法は不可能です。LINQが値を更新して以来、行が変更/削除されていると不平を言っています。
どのように私はVBネット不満なしで(変更された値で)リストをループすることができますか?答えはその後の各ループのための新しいを作成し、IDを引っ張っていたので、