使用帶有Entity Framework的(Sql Server)xml列

entity-framework sql-server-2008 xml

有沒有人試圖在實體框架中使用xml類型的列?實體返回一個字符串。

當表列是XML類型時,下一版本的Entity Framework是否支持XElement類型。

問候。

一般承認的答案

實體框架將XML列內容(鍵入或不輸入)作為字符串返回,因此它無法從xml文檔內容(它的節點)創建實體...如果您仍然好奇,請閱讀本文,它為您的問題提供了可能的解決方案..i雖然沒試過( 鏈接文字

回答Marc的最後一個問題......我希望在下一版本的EF中看到的是將xml文檔內容映射為實體的可能性,就像普通表格和它們之間的關係一樣..或者至少可以製作部分的xml文檔作為實體中的屬性..


熱門答案

這就是我現在正在做的事情,我正在為一個匹配我的模型的部分類添加一個方法,該類具有.Data屬性作為字符串。

基本上你有調用instance.UseData((data)=> {...});

在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



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因