我一直在寻找解决这个问题几个小时没有运气。
我有一个非常简单的场景 - 我在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'
答案 0 :(得分:0)
以防万一有人在寻找解决方案
在LINQ中无法使用FREETEXT
,这就是我创建存储过程的原因,尽管在我的情况下似乎无法使用存储过程由于某种原因(我不知道为什么)虽然我找到的解决方案是
创建一个函数并使用LINQ
调用该函数
现在对我有用
我必须在功能中做一件事 - 而不是使用
(FREETEXT([SEARCHMLinksData].*,@Keywords)
我必须使用
(FREETEXT([SEARCHMLinksData].Title,[SEARCHMLinksData].Description,@Keywords)
表示,列出所有被[名称]索引的列,因为它没有采用通配符
为什么这一切?我不知道,但这是我能找到的唯一解决方案
希望这有助于某人。