次のような DataContract があります。
<DataContract()> _
Public Class PrivateProfile
' This member is serialized.
<DataMember()> _
Public UserAccount As UserAccount
<DataMember()> _
Public ProfileName As String = ""
<DataMember()> _
Public Birthday As Date?
<DataMember()> _
Public Gender As Int16 = 0
<DataMember()> _
Public AboutMe As String = ""
<DataMember()> _
Public Locations As New List(Of Location)
<DataMember()> _
Public Contacts As New List(Of Contact)
End Class
連絡先は次のとおりです。
<DataContract()> _
Public Class Contact
' This member is serialized.
<DataMember()> _
Public Value As String
<DataMember()> _
Public ContactTypes_ContactTypeId As Int16
<DataMember()> _
Public PrivatePs As New List(Of PrivateProfile)
End Class
クライアント側では、次のコードを使用します。
Dim svcProfile As New svcProfiles.ProfilesClient
.....
Dim pprofile As New svcProfiles.PrivateProfile
.....
Dim co As New svcProfiles.Contact
co.Value = "34234234234"
co.ContactTypes_ContactTypeId = 1
pprofile.Contacts.Add(co)
連絡先をプロファイルに追加するとすぐに (最後の行)、NullReferenceException が発生します。連絡先は常に何もありませんが、その理由はわかりません。
どんなアイデアでも...たくさんグーグルで検索しました...
編集: wcf 実装 (サーバー) 側で同じ状況で実行すると、同じ問題が発生します:
If pprofile.Contacts.Count > 0 Then
Dim co As New contracts.Contact
For Each co In pprofile.Contacts
Dim con As New ef.Contact()
con.ContactTypes_ContactTypeId = co.ContactTypes_ContactTypeId
con.Value = co.Value
con.PrivatePs.Add(pp)
context.Add(con)
Next
context.SaveChanges()
End If