使用带有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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因