1

一連のストアド プロシージャを含む既存のデータベースがあります。データベース オブジェクトを変更せずに、アプリケーション層を再設計しています。私が直面している問題の 1 つは、同じテーブルを照会するが異なる列の組み合わせを返すという点で互いに類似している多くのストアド プロシージャがあることです。

部分的に満たされたエンティティを返すことも、Entity Framework 4.1 (および SQL Server 2008 R2) を使用してストアド プロシージャから匿名型を返す方法を見つけることもできません。これにより、基になるテーブル構造は同じですが、ストアド プロシージャごとに複雑な型を 1 つ定義する必要がありすぎます。

私の質問は次のとおりです。

  1. データベース オブジェクトを変更せずに EF を使用して実装できるエンティティ/複雑な型の数を最小限に抑えるためのソリューションを提案してください。

  2. また、部分的に満たされたエンティティを返すことは可能ですか? これにより、エンティティを再利用できます。オブジェクト追跡機能を使用する予定はありません。

  3. ストアド プロシージャの出力から匿名型を返すにはどうすればよいでしょうか。ほとんどの場合、JSON 形式でデータをクライアントに返すので、これで十分です。

ありがとう

4

2 に答える 2

2

匿名型を返すことはできません。これらは通常、内部で定義されているメソッドのスコープに制限されています。

部分的に満たされた型を返すこと自体は不可能ですが、これは可能です:

  • データベース層で、問題のストアド プロシージャを呼び出します。その「署名」に一致する特定の複合型を返します
  • AutoMapperのようなものを使用すると、複合型で返されたフィールドをシステムのエンティティに簡単にコピーでき、「部分的に埋められた」エンティティを取得できます
  • そのエンティティをデータベース層からアプリケーションに返して使用する

ストアド プロシージャから戻り値を取得するためだけに、多くの複雑な型を持つことを避けることはできません。アプリケーション全体。

于 2012-08-03T05:00:48.167 に答える
0

古き良き時代のようにSystem.Data.DataTableを使用するだけです。

于 2016-06-22T08:23:08.357 に答える