2

DoctrineのResultSetMappingのように、Entity Framework を使用して、任意の SQL から結果をマッピングする方法があるかどうか疑問に思っています。マッピングを行う構成クラスを作成できることはわかっていますが、そのためにはクラスをエンティティ タイプとして登録する必要があります。私がやろうとしているのは、EF の残りの部分なしで EF の実体化要素 (オブジェクト サービス) を利用することです。不可解またはあまり意味のない列名を持つ proc からの結果が得られることがありますが、より意味のあるプロパティ名を持つクラスにマップする必要がありますが、proc 定義を変更する権限がありません。

exec dbo.getRecDetail @var 

返す列:

sd, ed, nm, ....

次のようなクラスにマップする必要があります。

  class Obj{
       public DateTime StartDate; //sd
       public DateTime EndDate; //ed
       public String Name; //nm
       ....
    }
4

1 に答える 1

1

データベースファーストアプローチで.EDMXファイル(デザイナー)を使用している場合は、ストアドプロシージャをモデルにインポートし(ウィザードでストアドプロシージャを選択するだけ)、その結果を複合型にマップできます

実際には任意のSQLクエリでも機能しますが、それらのクエリをモデルに自動的にインポートすることはできません(データベースに存在しないため)。EDMXファイルのストレージモデルを手動で変更する必要があります(XMLです-FunctionおよびCommandText要素のドキュメントを確認してください)。これを行うと、カスタムクエリが削除されるため、デザイナのデータベースからの更新機能を使用できなくなります。

最初にコードを使用している場合、現在、ストアドプロシージャまたはカスタムクエリの結果をマップするオプションはありません。自動マッピングのみを使用できます。この場合、クラスには、結果セットの列とまったく同じ名前のプロパティが必要です。

于 2012-12-27T12:22:19.960 に答える