ExecuteFunction 仅支持具有返回类型的存储过程和函数

Posted

技术标签:

【中文标题】ExecuteFunction 仅支持具有返回类型的存储过程和函数【英文标题】:ExecuteFunction only supports stored procedures and functions that have a return type 【发布时间】:2018-05-07 16:21:27 【问题描述】:

我需要从实体框架调用 SP,使用 DB 优先方法。 下面是它的代码。但我面临错误。

“存储过程或函数‘XXXXXXX’没有返回类型。。”

var searchFieldParameter = searchField != null ?
            new ObjectParameter("SearchField", searchField) :
            new ObjectParameter("SearchField", typeof(string));

var searchTextParameter = searchText != null ?
            new ObjectParameter("SearchText", searchText) :
            new ObjectParameter("SearchText", typeof(string));

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ReasonCode>("XXXXXXX", searchFieldParameter, searchTextParameter);

【问题讨论】:

这能回答你的问题吗? Error calling Stored Procedures from EntityFramework 【参考方案1】:

我的问题得到了答案。以下代码可用于从 EF 调用 SP

var searchFieldParameter = searchField != null ?
            new SqlParameter("SearchField", searchField) :
            new SqlParameter("SearchField", typeof(string));

        var searchTextParameter = searchText != null ?
            new SqlParameter("SearchText", searchText) :
            new SqlParameter("SearchText", typeof(string));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<ReasonCode>("exec Reason_Codes_Search_SP @SearchField, @SearchText ", searchFieldParameter, searchTextParameter);

【讨论】:

以上是关于ExecuteFunction 仅支持具有返回类型的存储过程和函数的主要内容,如果未能解决你的问题,请参考以下文章

DbContext.Database.SqlQuery vs ObjectContext.ExecuteFunction

Office 外接程序 (Add-ins) 的 ExecuteFunction 命令变更

Office 外接程序 (Add-ins) 的 ExecuteFunction 命令变更

Office 外接程序 (Add-ins) 的 ExecuteFunction 命令变更

SQL 无法让 WHERE EXISTS 子句正常工作,并且仅返回在特定日期内具有客户端类型的行

仅返回类型不同的函数,在C++中如何实现重载?