2017-11-03 11 views
0

したがって、Entity Framework Coreを使用してストアドプロシージャを呼び出し、いくつかの行をオブジェクトに戻そうとしています。Entity Frameworkコア - FromSqlエラー:

解決策の例を以下に示しますが、私はすべての作業を行っていましたが、ストアドプロシージャを呼び出したり、結果をマップし直したりしていません。

var list = this.context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", new { @_iUserNumber = UserId }).ToList();

エラーを返す:

これは、コードの一部であった "リレーショナル型へのマッピングは、CLRタイプ '<> f__AnonymousType23' は見つかりませんことができ、"

答えて

0

このエラーをさらに検索して戻ってきた原因を突き止めた後、私はこれを誤って見つけ出しました。このスタックオーバーフローのポストから

No mapping exists from object type System.Collections.Generic.List when executing stored proc with parameters in EF 4.3

は、SqlParameterのために匿名のオブジェクトを渡すと、CLRタイプ「<> f__AnonymousType23」のため見つけることができますリレーショナル型へのこのマッピングなしにつながることが判明します。

このコードの修正は簡単でした。まず、実際のSqlParameterオブジェクトにパラメータを設定します。しかし、SqlParameterオブジェクトを渡すことはそれをListに入れ、そのToArray()をEF FromSqlメソッドで受け入れることで機能しませんでした。

List<SqlParameter> sqlParameters = new List<SqlParameter>(); 
sqlParameters.Add(new SqlParameter("@_iUserNumber", userId)); 

var list = context.DocumentList.FromSql<Document>("EXECUTE spSelDocsList @_iUserNumber", sqlParameters.ToArray()).ToList(); 
関連する問題