【发布时间】:2017-12-07 07:31:00
【问题描述】:
我一直在寻找解决这个问题几个小时,但没有运气。
我有一个非常简单的场景 - 我正在 LINQ-to-SQL 中尝试以下操作
var qry = (from row
in DBConnect.SEARCHhash("test", "1234")
select row);
SEARCHhash 是一个存储过程 - 不幸的是,我什至不能将 .ToList() 放在最后,因为 IntelliSense 显示以下错误
找不到源类型“void”的查询模式的实现。未找到“选择”。
我所有的其他存储过程都可以正常工作,只是这个不行。
然后我记得当我将存储过程拖放到 Designer 时,我收到了以下警告
无法检测到以下存储过程的返回类型。在“属性”窗口中设置每个存储过程的返回类型。
所以,我打开属性并单击下拉菜单,唯一可用的选项是 int(int32) 所以选择了 int
但现在我开始收到以下错误
找不到源类型“int”的查询模式的实现。未找到“选择”
以下是Designer的代码
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.SEARCHhash")]
public int SEARCHhash([global::System.Data.Linq.Mapping.ParameterAttribute(Name="Keywords", DbType="VarChar(540)")] string keywords, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="UserId", DbType="NVarChar(128)")] string userId)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), keywords, userId);
return ((int)(result.ReturnValue));
}
我也开始比较我的存储过程,我注意到这个存储过程中有JOIN,当然它使用的是`FREETEXT'
这是我的存储过程代码:
SELECT
[dbo].[SEARCHMLinksData].PageID,
[dbo].[SEARCHMLinksData].PageTitle,
[dbo].[SEARCHMLinksData].PageDescription,
[dbo].[SEARCHMLinksData].PageType
FROM
[dbo].[SEARCHMLinksData]
LEFT JOIN
[dbo].[SEARCHMLinksTags] ON [SEARCHMLinksData].PageID = [SEARCHMLinksTags].PageID
WHERE
(FREETEXT([SEARCHMLinksData].*, @Keywords) OR
FREETEXT([SEARCHMLinksTags].*,@Keywords) )
AND
([SEARCHMLinksData].UserID = @UserId OR [SEARCHMLinksTags].[user_id] = @UserId)
任何想法或帮助将不胜感激
干杯
此外,我尝试了很多东西,包括以下内容 https://www.mssqltips.com/sqlservertip/1542/using-stored-procedures-with-linq-to-sql/ The return types for the following stored procedures could not be detected Could not find an implementation of the query pattern for source type 'System.Data.Entity.DbSet'
【问题讨论】:
-
你能看看
import System.Linq;是否加在你的cs文件里吗? -
嗨,是的
using System.Linq; using System.Xml.Linq; using System.Data.Linq;