2009-04-14 23 views

答えて

6

エンティティフレームワークはXML列の内容(型付けされているかどうか)を文字列として返します。したがって、XML文書のコンテンツ(ノードです)からエンティティを作成できません...この記事を読んでも、あなたの問題への解決策..私はそれを試していませんでしたが(link text

返信するMarcの最後の質問..次のバージョンのEFで見たいと思うのは、XMLドキュメントの内容をエンティティそれは通常のテーブルとそれらの間の関係で行います。または、少なくとも、エンティティのプロパティとしてxmlドキュメントの一部を作成します。

2

ここで私がやっていることは、部分クラスにメソッドを追加しています.Dataプロパティを持つモデルを文字列として照合します。

基本的には、instance.UseData((data)=> {...})を呼び出しています。

ラムダ式の中では、データの読み込み/操作が可能で、データベースの元のフィールドに戻って保存できます。このプロパティを作成するだけで関連するフィールドを更新します。私はXMLなどのデータ・フィールドに、よりダイナミックな構造を無理に勧めています

が...これは...

私のプロジェクトは、C#であった場合にC#は..私はJSONを優先するように傾斜するかもしれないとVB.Netで、より自然です

C#

public void UseData(Action editor) 
{ 
    var def = XElement.Parse(""); 
    XElement data; 
    try 
    { 
     if (String.IsNullOrWhiteSpace(this.Data)) 
     { 
      data = def; 
     } 
     else 
     { 
      data = XElement.Parse(this.Data); 
     } 
    } 
    catch (Exception ex) 
    { 
     data = def; 
    } 
    editor(data); 
    this.Data = data.ToString(); 
}

VB.Net

Public Sub UseData(editor As Action(Of XElement)) 
    Dim def = 
    Dim data As XElement 
    Try 
     If String.IsNullOrWhiteSpace(Me.Data) Then 
      data = def 
     Else 
      data = XElement.Parse(Me.Data) 
     End If 
    Catch ex As Exception 
     data = def 
    End Try 
    editor(data) 
    Me.Data = data.ToString() 
End Sub

関連する問題