質問: ストアドプロシージャを呼び出してエンティティを挿入する必要があります。データベースのテーブルには、 `GetDate()`既定値を持つ`CreateDateTime`という列があります。 ストアドプロシージャが`CreateDateTime`列を設定/更新することはできません。 `dbcontext.SaveChanges()`を呼び出すと、実際にはストアドプロシージャが呼び出され、行が挿入されますが、EFでは次のエラーがスローされます。 > 関数マッピングは、結果セットに含まれていない結果カラム 'CreateDateTime'を指定します。 > > 私の`DbContext`クラスには次のものがあります: ``` modelBuilder .Entity() .MapToStoredProcedures(s => s.Update(u => u.HasName("TestUpdate")) .Delete(d => d.HasName("TestDelete")) .Insert(i => i.HasName("TestInsert"))); ``` `TestInsert`ストアドプロシージャは、単純な`INSERT INTO... SELECT SCOPE_IDENTITY()` 私の`Test`クラスでは、私は次のようなプロパティを持っています。 ``` [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime CreateDateTime { get; set; } ```
回答: Per @ CodeNotFoundの提案。 TestInsertストアドプロシージャからの戻り値は、SCOPE_IDENTITY()メソッドだけでなく、結果セット全体を返す必要があります。 それだけでなく、ストアド・プロシージャには、エンティティ・モデルの各「マップ済」フィールドのパラメータが含まれていなければなりません。 私の最後の行は、InsertTestストアドプロシージャのようなものです。 ``` SELECT * FROM Test WHERE ID = SCOPE_IDENTITY() ```