VB.NET プログラムにて LINQ to SharePoint を使用してアイテムを作成または更新する際に設定できない列がある

現象
SPMetal.exe を使用して生成した VB.NET のエンティティ クラスを使用してリスト アイテムを作成または更新する際に、"数値" 列、"通貨" 列、"はい/いいえ" 列、"日付と時刻" 列、または "ユーザーまたはグループ" 列に値を設定することができません。
原因
この問題は SPMetal.exe にて生成される VB.NET のエンティティ クラスの "数値" 列、"通貨" 列、"はい/いいえ" 列、"日付と時刻" 列、または "ユーザーまたはグループ" 列を設定するコードに問題があるために発生します。
この現象はエンティティ クラスを VB.NET で生成した場合のみ発生し、エンティティ クラスを C# で生成した場合は発生しません。
解決方法
SPMetal.exe にて生成されたエンティティ クラスの "数値" 列、"はい/いいえ" 列、"日付と時刻" 列、を設定するコードにおいて、"<>" 演算子を " Equals" メソッドに変更します。

- 変更前
    <Microsoft.SharePoint.Linq.ColumnAttribute(Name:="No", Storage:="_no", FieldType:="Number")> _
    Public Property No() As System.Nullable(Of Double)
        Get
            Return Me._no
        End Get
        Set
            If (value <> Me._no) Then
                Me.OnPropertyChanging("No", Me._no)
                Me._no = value
                Me.OnPropertyChanged("No")
            End If
        End Set
    End Property

- 変更後
    <Microsoft.SharePoint.Linq.ColumnAttribute(Name:="No", Storage:="_no", FieldType:="Number")> _
    Public Property No() As System.Nullable(Of Double)
        Get
            Return Me._no
        End Get
        Set
            If (Me._no.Equals(value) = False) Then
                Me.OnPropertyChanging("No", Me._no)
                Me._no = value
                Me.OnPropertyChanged("No")
            End If
        End Set
    End Property

※ 上記の例は "数値" 列について記載しておりますが、他の列についても同様に変更します。
回避策
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細
関連情報
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2698594 - 最終更新日: 04/05/2012 04:58:00 - リビジョン: 1.0

Microsoft SharePoint Server 2010, Microsoft SharePoint Foundation 2010

  • KB2698594
フィードバック