質問: 私はEF Core(コードファースト)で作業しており、ストアドプロシージャからデータを取得したい。返される結果は、結果リターンに基づいて定義されたクラスIでなければなりません。 戻り値の型がエンティティの1つであれば、それを動作させることができます。例。 ``` _context.Set().FromSql("dbo.Stored_Proc").ToList(); ``` 私の戻り値が文脈内の実体でない場合はそうではありません。 どんな助けもありがとう。
回答: それはかなり簡単です。 これを行うには3つのステップがあります: 1. SPが返す同じプロパティを持つモデルクラスを作成する ``` public class SPModel { public int Id {get;set;} public DateTime? CreatedDateTime {get;set;} etc.. } ``` 2. 次のように、このモデルクラスをdbContextクラスに挿入します。 ``` public class YourDbContext: DbContext { public virtual DbSet YourDbSet { get; set; } .... } ``` このクラスを任意のSQLテーブルにマップしないでください 3. それをSPのように呼び出すのに使う: ``` var collection = await dbContext.YourDbSet.FromSql("EXECUTE yourStoredProcedure {0},{1}", param1, param2).ToListAsync(); ``` いくつかの有用なもの: - try / catchブロックを使用して、いくつかのプロパティが欠落していないかどうかを確認することができます - モデルクラスを拡張して新しいプロパティを追加することはできますが、 'set'アクセサは避けてください:public bool IsLoaded {get;} - SPがnull許容型を返す場合は注意してください。この場合、モデルにもnullable型が必要です