2013-04-17 27 views
0

我們正在建設一個新的Web服務,這將在一個特定的,公共元數據格式返回數據。設計包括數據格式之間的轉換在.NET

我們目前有一個數據庫系統,它是圍繞着相同的格式設計,但不符合它到底,因爲這需要整個要遷移,沒有任何數據丟失保持預先存在的數據。

對於使用數據庫構建應用程序,我創建了一個單獨的組件,與實體框架項目中。這個程序集可以被希望與數據庫交互的任何解決方案使用。

對於Web服務項目,市民元數據格式我已經使用.NET的xsd.exe工具(很方便)變成C#類的XML模式。實質上,Web服務將從數據庫中返回對象,但使用上述元數據格式定義的格式。這意味着需要進行某種形式的翻譯/轉換,才能將實體框架對象放入公共元數據格式對象中,然後由Web服務返回。

假設我有DBEntities.dll和PublicMetadataFormat.dll,這將是去了解「翻譯」這些格式,在設計方面的最佳方法是什麼?

這裏是我想過的可能性:

  • 創建了兩種格式之間進行轉換的一些靜態擴展類。例如,EFEntity.ToMetadataFormat()或MetadataFormat.ToEFEntity()。
  • 在相應的項目中,實現允許在兩種格式之間進行轉換的顯式或隱式運算符。
  • 在每個上實現IConvertible,以允許在兩種格式之間進行轉換。
  • 創建兩個TypeConverter類,並將它們應用於每種格式。

我真正喜歡上述的唯一選項是靜態擴展類的想法,因爲它允許兩個程序集保持未修改,並使它們解耦。它還允許跨解決方案進行不同的轉換實施。

最後我想要做的是爲公共元數據格式創建一個LINQ提供程序,就像已經爲實體框架對象一樣,我可以注入一個「轉換器」對象來控制數據庫對象被翻譯成元數據對象。

有誰在翻譯或兩個鬆散的相關格式之間進行轉換,這樣的經驗嗎?如何最好地處理它?

問候, 尼克

回答

2

我沒有用它自己,而是這聽起來像AutoMapper

+0

有趣的工作。絕對看起來像一個可能性... –