Importing SQL Server’s CONTAINS() as a model defined function

The function you have defined above uses Entity SQL, not Transact SQL, so I think the first step is to figure out whether CONTAINS(*,’text’) can be expressed in Entity SQL.

Entity SQL doesn’t support the * operator as described here: http://msdn.microsoft.com/en-us/library/bb738573.aspx and if I try

entities.CreateQuery<TABLE_NAME>("select value t from TABLE_NAME as t where CONTAINS(*, 'text')");

I get the same error you got above. If I try to explicitly pass the column it works:

entities.CreateQuery<TABLE_NAME>("select value t from TABLE_NAME as t where CONTAINS(t.COLUMN_NAME, 'text')");

But when I look at the SQL it translated it to a LIKE expression.

ADO.NET:Execute Reader "SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[TABLE_NAME] AS [Extent1]
    WHERE (CASE WHEN ([Extent1].[COLUMN_NAME] LIKE '%text%') THEN cast(1 as bit) WHEN ( NOT ([Extent1].[COLUMN_NAME] LIKE '%text%')) THEN cast(0 as bit) END) = 1
)  AS [GroupBy1]"

If you cannot express the query using Entity SQL you’ll have to use a Stored Procedure or other mechanism to use Transact SQL directly.

Leave a Comment

techhipbettruvabetnorabahisbahis forumu