4

PropertyValuesString は、通常、これらのタイプのオブジェクトのキーと値のペアであるものの値部分用であると考えました。しかし、PropertyValuesString に既に値を入れている場合、PropertyValuesBinary フィールドはどこに入るのでしょうか?

両方のフィールドは null 不可であるため、それぞれに何かを入れる必要があります。2つの違いは何ですか?何を入れる必要がありますか?

また、なぜ複数形なのか疑問に思っていました - PropertyValue s - キーと値のペア全体では意味がありません.1つのプロパティには1つの値が必要だと思いました.

4

1 に答える 1

9

SqlProfileProvider は、aspnet_Profile テーブルの 3 つのフィールド (PropertyNames、PropertyValuesString、および PropertyValuesBinary) でプロファイル プロパティを永続化します。以下は、各フィールドに格納される内容の概要です。

  • PropertyNames は、PropertyValuesString および PropertyValuesBinary フィールドに存在するプロファイル プロパティ値に関する情報を含む文字列値を保持します。文字列には、コロンで区切られたアイテムのリストが含まれます。各項目は 1 つのプロパティ値を表し、次の形式でエンコードされます: Name:B|S:StartPos:Length

    • Name はプロパティ値の名前です。
    • 2 番目のパラメーターは、B (「バイナリ」の場合) または S (「文字列」の場合) であり、対応するプロパティ値がPropertyValuesStringフィールド (S) またはPropertyValuesBinaryフィールド (B) のどちらに格納されるかを示します。
    • StartPos と Length は、こ​​れらのフィールド内の対応するプロパティ値の開始位置 (0 ベース) とデータの長さをそれぞれ示します。長さ -1 は、プロパティが参照型であり、その値が null であることを示します。
  • PropertyValuesStringは、プロファイル プロパティ値を文字列として保存します。これには、.NET Framework の XML シリアライザーによってシリアル化されたプロパティ値と、文字列型コンバーターを使用してシリアル化されたプロパティ値が含まれます。PropertyNames フィールドの「S」値には、PropertyValuesStringを個々のプロパティ値に分解するために必要なオフセットと長さが含まれます。

  • PropertyValuesBinary は、プロファイル プロパティ値をバイナリ形式で保存します。つまり、.NET Framework のバイナリ シリアライザーを使用してシリアル化されたプロファイル プロパティです。PropertyNames フィールドの "B" 値には、PropertyValuesBinaryを個々のプロパティ値に分解するために必要なオフセットと長さが含まれます。

プロファイル プロバイダーは、この形式またはその他の形式でデータを永続化する必要はありません。プロファイル データが保存される形式は、プロバイダーの作成者の裁量に任されています。

詳細情報の元のリンク: http://msdn.microsoft.com/en-us/library/aa478953.aspx これがお役に立てば幸いです。

于 2009-12-23T16:28:35.690 に答える