2013-04-17 21 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

有趣的工作。绝对看起来像一个可能性... –