私の質問はこれです。以下に示すコレクションをループし、値を適切に設定した場合dc.SubmitChanges()
、各反復の最後に呼び出す必要がありますか? そうしないと、更新時に以前の値を上書きするだけではないでしょうか?
このメソッドにContact
オブジェクトを渡しています。Save()
そのオブジェクトには、プロパティを持つPersonContact
プロパティがありPhones
ます。これは、オブジェクト内Save()
の をループしてと比較し、適切なアクションを実行する必要があるメソッドの部分です。Phones
DB
より良い、より簡単な方法はありますか?
If contact.PersonContact.Phones IsNot Nothing Then
For Each phone In contact.PersonContact.Phones
Dim exists = dc.tblPhones.SingleOrDefault(Function(p) p.ID = phone.ID)
If exists IsNot Nothing Then
If phone.Number = String.Empty AndAlso phone.Extension = String.Empty Then
'Delete
dc.tblPhones.DeleteOnSubmit(exists)
Else
'Update
exists.ID = phone.ID
exists.PhoneNumber = phone.Number
exists.TypeID = phone.TypeID
exists.UpdateDate = DateTime.Now
exists.UpdateUser = user
End If
Else
'Insert
exists = New tblPhone() With { _
.ID = phone.ID, _
.PhoneNumber = phone.Number, _
.Extension = phone.Extension, _
.TypeID = phone.TypeID, _
.InsertDate = DateTime.Now, _
.InsertUser = user, _
.PersonID = contact.PersonContact.ID _
}
dc.tblPhones.InsertOnSubmit(exists)
End If
'Do I need to Save here???
dc.SubmitChanges()
Next
End If