如何调试TableValued SQL函数

时间:2017-04-12 10:34:13

标签: c# sql table-valued-parameters containstable

我有一个数据库,其中包含一个表值函数,用于实现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;我得到了一个例外

如何调试底层函数以找出抛出异常的内容?

或者 - 我的声明中我做错了什么?

0 个答案:

没有答案