0

我们正在构建一个新的 Web 服务,它将以特定的公共元数据格式返回数据。

我们目前有一个数据库系统,它是围绕相同的格式设计的,但并不完全符合它,因为需要在不丢失任何数据的情况下迁移和维护预先存在的数据。

为了构建使用数据库的应用程序,我创建了一个程序集,其中包含一个实体框架项目。然后,任何希望与数据库交互的解决方案都可以使用该程序集。

对于 Web 服务项目,公共元数据格式有一个 xml 模式,我使用 .NET 的 xsd.exe 工具将其转换为 C# 类(非常方便)。从本质上讲,Web 服务将从数据库中返回对象,但采用上述元数据格式定义的格式。这意味着需要进行某种形式的翻译/转换才能将实体框架对象转换为公共元数据格式对象,然后由 Web 服务返回。

假设我有 DBEntities.dll 和 PublicMetadataFormat.dll,那么在设计方面“翻译”这些格式的最佳方式是什么?

以下是我想到的可能性:

  • 创建一些在两种格式之间转换的静态扩展类。例如,EFEntity.ToMetadataFormat() 或 MetadataFormat.ToEFEntity()。
  • 在各自的项目中,实现显式或隐式运算符,以允许在两种格式之间进行转换。
  • 在每个上实现 IConvertible,以允许在两种格式之间进行转换。
  • 创建两个 TypeConverter 类,并将它们应用于每种格式。

从上面我真正喜欢的唯一选择是静态扩展类的想法,因为它允许两个程序集保持不变,并使它们不耦合。它还允许跨解决方案的转换的不同实现。

最终我想做的是也为公共元数据格式创建一个 LINQ 提供程序,就像已经有实体框架对象一样,我可以向其中注入一个“转换器”对象,该对象控制如何将数据库对象转换为元数据对象。

有没有人在像这样的两种松散相关的格式之间进行翻译或转换的经验?如何最好地接近它?

问候,尼克

4

1 回答 1

2

我自己没用过,但这听起来像是AutoMapper的工作

于 2013-04-17T14:54:36.327 回答