2011-10-08 133 views
0

如何将xml表列映射到POCO对象中的XElement属性。EF代码优先4.1 xml XElement

是否有方法使用复杂类型映射它,或者为EF框架提供某种类型的转换函数,以便我可以使用XElement作为属性类型并在数据库中将其用作xml。

我希望流利的api有一些映射这个的方法,但是我的搜索没有取得任何结果,而且似乎这个问题并不像我想象的那么普遍。

谢谢。

回答

4

不,没有支持,fluen-API也不会帮助你。 EF也没有像转换函数那样的东西(我简单地称之为类型映射)。

您可以尝试的是当需要转换时通常使用的解决方法 - 您需要两个属性。一个将字符串和映射到您的XML列(我没有尝试它,但我希望它会工作),第二个将不映射XElement。第二个属性将从内部转换为第一个字符串属性。例如:

public class YourEntity 
{ 
    public string MappedProperty { get; set; } 

    public XElmenet NotMappedProperty 
    { 
     get 
     { 
      return XElement.Parse(MappedProperty); 
     } 
     set 
     { 
      // Some validation 
      MappedProperty = value.ToString(); 
     } 
    } 
} 

这并不好,它不会让你的实体界面更好,但EF目前没有提供更好的东西。

+0

这不是我希望的答案。为开源提供了一个很好的例子,因为考虑到源代码,我可能会在大约十分钟内修复这个可怕的错误。 一些疏忽,在我看来,这只是马虎,并没有触摸点,从而重写默认行为使情况变得更糟。 – Jim

+0

@Jim:我不认为这会很容易解决。我花了很多时间在Reflector学习EF代码,这不是很好。 –

+0

谢谢拉迪斯拉夫,我做了同样的事情。几年前,我花了很多时间对JBoss(Sql Server Support)进行了更改,并认为它会大致相同。我得出了类似的结论。今天我买了反射器,决定让我自己的EF库进行必要的更改。我没有放弃,但是在查看代码之后我有些放气。 – Jim