Функция, которую вы определили выше, использует Entity SQL, а не Transact SQL, поэтому я думаю, что первым шагом будет выяснить, можно ли CONTAINS (*, 'text') выразить в Entity SQL.
Entity SQL не поддерживает оператор *, как описано здесь: http://msdn.microsoft.com/en-us/library/bb738573.aspx и, если я попытаюсь
entities.CreateQuery<TABLE_NAME>("select value t from TABLE_NAME as t where CONTAINS(*, 'text')");
Я получаю ту же ошибку, что и выше. Если я пытаюсь явно передать столбец, он работает:
entities.CreateQuery<TABLE_NAME>("select value t from TABLE_NAME as t where CONTAINS(t.COLUMN_NAME, 'text')");
Но когда я смотрю на SQL, он переводит его в выражение LIKE.
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]"
Если вы не можете выразить запрос с помощью Entity SQL, вам придется использовать хранимую процедуру или другой механизм для непосредственного использования Transact SQL.