2009-04-14 112 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