【问题标题】:Stored procedure returns int value when the TSQL have full text search property当 TSQL 具有全文搜索属性时,存储过程返回 int 值
【发布时间】:2016-02-23 04:14:34
【问题描述】:

我必须在存储过程的查询中使用CONTAINS(全文搜索)。因此,当我通过实体框架将此存储过程绑定到我的应用程序时,它会返回一个 int 值而不是对象列表。

前:

存储过程:

ALTER PROCEDURE [dbo].[GetTableData]
    (@UserId UNIQUEIDENTIFIER)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT Column1, Column2 
    FROM TABLE1
    WHERE Id = @UserId AND CONTAINS(Column1,'test')
END

实际结果:

public virtual int GetTableData(Nullable<System.Guid> userId)
{
     var userIdParameter = userId.HasValue ?
                    new ObjectParameter("UserId", userId) :
                    new ObjectParameter("UserId", typeof(System.Guid));

     return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetTableData_Result>("GetTableData", userIdParameter );
 }

预期结果:

public virtual ObjectResult<GetTableData_Result> GetTableData(Nullable<System.Guid> userId)
{
    var userIdParameter = userId.HasValue ?
                new ObjectParameter("UserId", userId) :
                new ObjectParameter("UserId", typeof(System.Guid));

    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetTableData_Result>("GetTableData", userIdParameter );
}

如果我删除 AND CONTAINS(Column1,'test') 条件,它会完美运行并给出预期结果。

我也尝试了SET FMTONLY OFF 选项。那也不行。

我该如何解决这个问题?

需要在存储过程中添加任何属性或任何其他东西吗?

谁能帮我解决这个问题?

【问题讨论】:

    标签: sql-server stored-procedures linq-to-entities entity-framework-6 c#-2.0


    【解决方案1】:

    您需要在表格列上创建全文目录。

    这里是参考。

    https://msdn.microsoft.com/en-us/library/ms187787%28v=sql.110%29.aspx

    【讨论】:

    • 我已经为表格字段创建了全文目录和全文索引。
    • 尝试在 sql management studio 中运行您的程序并发布输出
    • 在我的 SQL 管理工作室中运行该过程时,我得到了准确的输出。当我通过实体框架将该过程绑定到我的应用程序时出现问题。
    【解决方案2】:

    在你的存储过程中试试这个:

    SELECT Column1, Column2 
    FROM TABLE1 AS t1
    WHERE Id = @UserId
       AND EXISTS (SELECT 
            1 AS c1
            FROM TABLE1 AS t2
            WHERE (contains(t2.Column1,'test')) AND (t1.Id = t2.Id)
        )
    

    【讨论】:

    • 感谢您的解决方案。但是如果我们使用内部查询,就会影响查询性能。还有其他方法吗?
    • 嗯,这是适用于我们项目的一种方式。如果您有适当的索引,它必须可以正常工作。不幸的是,我不知道任何其他方式.. 除了不使用实体框架的全文搜索。
    • @LTaravindh 那么您找到适合您情况的解决方法了吗?
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多