我有一个数据库,其中包含一个表值函数,用于实现CONTAINSTABLE查询。它看起来像这样:
CREATE Function [dbo].[FreeTextSearch_Usage]
(@SearchString varchar(1024) )
returns table
AS
return Select top 750 rank, internalid, myVal1, myVal2, myVal3
FROM (SELECT K.RANK, C.internalid, C.Realid as myVal1,
D.valStr2 as myVal2, D.valStr3 as myVal3
FROM [dbo].[idmapping] AS C
INNER JOIN
CONTAINSTABLE ( [dbo].myTable1,
myColumn1,
@SearchString
) AS K ON C.[internalid] = K.[KEY]
join [dbo].[valTbl] as D on
D.valID = K.[key]
union --- more CONTAINSTABLE queries
) AS Match
ORDER BY rank desc
这可以工作并且已作为独立代码进行测试,并且在使用t-sql调用时也可以使用 从FreeTextSearch_Usage('关键字')
中选择*但是现在我试图从我的C#代码中调用它来声明数据库(自动通过代码gen)
public partial class myDBContextContainer : DbContext
{
public myDBContextContainer() : base (name=myDBContextContainer)
{}
o o o
[DbFunction(myDBContextContainer, FreeTextSearch_Usage)]
public virtual IQueryable<FreeTextSearch_Usage_Result> FreeTextSearch_Usage ( string searchString )
{
var searchStringParameter = new ObjectParameter ("SearchString", SearchString );
return ((IObjectContextAdapter)this.....very long - will reproduce if needed
}
所以在我的代码中我执行以下操作:
using( var myDBctx = new myDBContextContainer () )
{
try
{
var usageList = myDBctx.FreeTextSearch_Usage("'keyword'").ToList();
var usageList2 = from s in myDBctx.FreeTextSearch_Usage( "keyword" )
select new List<usageListType> {};
}
catch (e )
并且几乎无论我传递什么作为关键字,它都会抛出一个内部异常值为的异常 &#34; FullText查询字符串的全文查询参数无效&#34;
所以如果我传递一个字符串&#34;关键字&#34;我得到一个例外 如果我传递一个形式的字符串&#39; keywod&#39;我得到一个例外 如果我传递一个字符串&#34;&#39; FORMSOF(INFLECTIONAL,&#39; keyword&#39;)&#39;&#34;我得到一个例外 如果我传递一个表格的字符串&#34;&#34; FORMSOF(INFLECTIONAL,&#39; keyword&#39;)&#34;&#34;我得到了一个例外
如何调试底层函数以找出抛出异常的内容?
或者 - 我的声明中我做错了什么?