質問: 私はASP.NET 4.5アプリケーションを.NETコアに移植しようとしています。私は理解できないような真の問題が1つあります。 私の既存のアプリケーションは、複数のデータテーブルを持つデータセットを返すストアドプロシージャを実行します。 Entity Frameworkは、返されたフィールドを自動的にエンティティプロパティにマップできますが、データセット内の最初のデータテーブル(自然)でのみ動作します。 だから、モデル構築プロセスを横取りしてカスタムコードを使ってデータセットを処理し、エンティティフィールドを設定するために他のデータセットを調べることができるかどうかを調べようとしています。 私は`SqlConnection`を使用してストアドプロシージャを直接実行する通常の方法を使用できますが、Entity Frameworkにこれを実行する方法があるかどうかは疑問です。
回答: 現在、データを返すストアドプロシージャを実行する方法は、 `DbSet.FromSql`メソッドを使用することです。 ``` using (var context = new SampleContext()) { var data= context.MyEntity .FromSql("EXEC GetData") .ToList(); } ``` これには一定の制限があります。 * それは`DbSet`で呼び出される必要があります * 返されるデータは、 `DbSet`型のすべてのプロパティにマップする必要があります * アドホックオブジェクトはサポートされていません。 あるいは、単純なADO.NETに戻ることができます: ``` using (var context = new SampleContext()) using (var command = context.Database.GetDbConnection().CreateCommand()) { command.CommandText = "GetData"; command.CommandType = CommandType.StoredProcedure; context.Database.OpenConnection(); using (var result = command.ExecuteReader()) { // do something with result } } ``` いくつかの段階でSQLクエリからアドホック型を返すサポートを導入する計画があります。