0

特定のパブリック メタデータ形式でデータを返す新しい Web サービスを構築しています。

現在、同じフォーマットを中心に設計されたデータベース システムがありますが、データを失うことなく移行および維持する必要がある既存のデータのため、正確には準拠していません。

データベースを使用するアプリケーションを構築するために、Entity Framework プロジェクトを内部に含む単一のアセンブリを作成しました。このアセンブリは、データベースと対話する任意のソリューションで使用できます。

Web サービス プロジェクトの場合、パブリック メタデータ形式には xml スキーマがあり、.NET の xsd.exe ツール (非常に便利) を使用して C# クラスに変換しました。基本的に、Web サービスはデータベースからオブジェクトを返しますが、前述のメタデータ形式で定義された形式になります。これは、Entity Framework オブジェクトをパブリック メタデータ形式のオブジェクトに変換するために、なんらかの形式の変換/変換を行う必要があることを意味します。これは、Web サービスによって返されます。

DBEntities.dll と PublicMetadataFormat.dll があると仮定すると、設計の観点から、これらのフォーマットを「変換」するための最良の方法は何でしょうか?

私が考えた可能性は次のとおりです。

  • 2 つの形式間で変換するいくつかの静的拡張クラスを作成します。例: EFEntity.ToMetadataFormat()、または MetadataFormat.ToEFEntity()。
  • それぞれのプロジェクトで、2 つの形式間のキャストを許可する明示的または暗黙的な演算子を実装します。
  • それぞれに IConvertible を実装して、2 つの形式間の変換を可能にします。
  • 2 つの TypeConverter クラスを作成し、それぞれの形式に適用します。

上記の中で私が本当に気に入っている唯一のオプションは、静的拡張クラスのアイデアです。これにより、両方のアセンブリを変更せずにそのままにしておくことができ、結合されていないままになります。また、ソリューション間での変換のさまざまな実装も可能です。

最終的には、パブリック メタデータ形式用の LINQ プロバイダーも作成したいと考えています。これは、Entity Framework オブジェクト用に既にあるように、データベース オブジェクトがどのように変換されるかを制御する「コンバーター」オブジェクトを挿入することができます。メタデータ オブジェクト。

このように、ゆるやかに関連する 2 つの形式間で翻訳または変換した経験がある人はいますか? どのようにアプローチするのが最善ですか?

よろしく、ニック

4

1 に答える 1

2

私自身は使用していませんが、これはAutoMapperの仕事のように思えます

于 2013-04-17T14:54:36.327 に答える