2009-04-14 109 views
16
的(SQL Server)的XML列

有沒有人嘗試過使用XML類型的列與實體框架? 實體返回一個字符串。使用實體框架

會當表列是XML類型的實體框架支持的XElement類型的下一個版本。

問候。

回答

6

實體框架返回XML列的內容(類型與否)爲字符串,因此它不能從XML文檔中的內容(它的節點)創建一個實體......如果你還在好奇讀這篇文章,它提供了可能解決您的problem..i沒有嘗試過,但(link text

回答Marc的最後question..what我期待在EF的下一個版本看到的是映射XML文檔內容的實體的可能性,像它與普通表和它們之間的關係..或至少使XML文檔中的實體屬性的部分..

2

這裏是我現在正在做的事情,我加入一個方法,一個局部類將具有.Data屬性的模型與字符串匹配。

本質上必須調用instance.UseData((數據)=> {...});

從那裏內的lambda表達式可以讀/操作數據,並將其保存回數據庫的原始字段......我很想只是能夠創建此屬性,綁定到一個事件來更新相關字段。

我推動更多的動態結構到數據字段作爲XML ...這是更自然的VB.Net,C#..如果我的項目是在C#我可能傾向於支持JSON ...

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