【问题标题】:Design involving conversions between data formats in .NET涉及 .NET 中数据格式之间转换的设计
【发布时间】:2013-04-17 11:19:37
【问题描述】:

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

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

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

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

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

以下是我想到的可能性:

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

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

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

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

问候, 尼克

【问题讨论】:

    标签: .net entity-framework type-conversion


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2014-06-08
      • 2017-07-09
      • 1970-01-01
      相关资源
      最近更新 更多