0

私の質問はこれです。以下に示すコレクションをループし、値を適切に設定した場合dc.SubmitChanges()、各反復の最後に呼び出す必要がありますか? そうしないと、更新時に以前の値を上書きするだけではないでしょうか?

このメソッドにContactオブジェクトを渡しています。Save()そのオブジェクトには、プロパティを持つPersonContactプロパティがありPhonesます。これは、オブジェクト内Save()の をループしてと比較し、適切なアクションを実行する必要があるメソッドの部分です。PhonesDB

より良い、より簡単な方法はありますか?

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
4

0 に答える 0