Entity Frameworkモデルに関数インポートとして追加されたストアドプロシージャから結果セットと出力パラメーターの両方にアクセスする方法はありますか?
base.ExecuteFunction(...)
戻り型を「None」に設定して、デザイナーが生成したコードが、関数を呼び出した後に出力パラメーターに正常にアクセスできるように呼び出してしまう場合(もちろん、結果セットではない)、私は見つけています。
逆に、デザイナーで戻り型を複合型のコレクションに設定すると、デザイナーが生成しbase.ExecuteFunction<T>(...)
たコード呼び出しと結果セットがとして返されますが、インスタンスObjectResult<T>
のvalue
プロパティには、返されることがわかる適切な値が含まれていません。プロファイラインチObjectParameter
NULL
2番目のメソッドはおそらくDataReaderを呼び出して、それを閉じないことだと思います。これは既知の問題ですか?回避策や代替アプローチはありますか?
編集
私のコードは現在次のようになっています
public IEnumerable<FooBar> GetFooBars(
int? param1,
string param2,
DateTime from,
DateTime to,
out DateTime? createdDate,
out DateTime? deletedDate)
{
var createdDateParam = new ObjectParameter("CreatedDate", typeof(DateTime));
var deletedDateParam = new ObjectParameter("DeletedDate", typeof(DateTime));
var fooBars = MyContext.GetFooBars(param1, param2, from, to, createdDateParam, deletedDateParam);
createdDate = (DateTime?)(createdDateParam.Value == DBNull.Value ?
null :
createdDateParam.Value);
deletedDate = (DateTime?)(deletedDateParam.Value == DBNull.Value ?
null :
deletedDateParam.Value);
return fooBars;
}