2011-10-08 134 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