Как добраться, разряд от полнотекстового поиска запрашивают с Linq к SQL?

Я использую Linq для SQL для вызова хранимой процедуры, которая запускает полнотекстовый поиск и возвращает разряд плюс несколько определенных столбцов от таблицы Article. Столбец разряда является разрядом, возвращенным из функции SQL FREETEXTTABLE (). Я добавил этот sproc к разработчику O/R с типом возврата Article.

Это работает для получения столбцов, в которых я нуждаюсь; однако, это отбрасывает рейтинг каждого результата поиска. Я хотел бы получить эту информацию, таким образом, я могу отобразить ее пользователю.

До сих пор я попытался создать новый класс RankedArticle который наследовался Article и добавляет столбец Rank, затем изменяя тип возврата моего sproc, отображающегося на RankedArticle. Когда я пробую это, InvalidOperationException брошен:

Элемент данных 'Int32 ArticleID' типа '"куча". Модели. Статья' не является частью отображения для типа 'RankedArticle'. Участник выше корня иерархии наследования?

Если я позволяю разработчику O/R установить собственный тип возврата sproc, он возвращает интервал, а не объект "SearchArticlesByKeywordResult". Я не уверен, почему это, возможно, потому что sproc возвращает объединение? Вот моя процедура:

BEGIN
SET NOCOUNT ON;
(
    SELECT ftt.[rank] as [Rank], ArticleID, Subject
    FROM Article
    INNER JOIN FREETEXTTABLE( Article, (Subject, Body), @KeywordList ) AS ftt
    ON ftt.[key] = Article.ArticleID

    UNION

    SELECT ftt.[rank] as [Rank], Article.ArticleID as ArticleID, Article.Subject as Subject
    FROM Article
    INNER JOIN Solution ON Solution.ArticleID = Article.ArticleID
    INNER JOIN FREETEXTTABLE( Solution, Body, @KeywordList ) AS ftt
    ON ftt.[key] = Solution.SolutionID
)
ORDER BY [Rank] DESC
END

Я, может казаться, не нахожу никакие другие вопросы, или Google следует из людей, пытающихся получить столбец разряда, таким образом, я, вероятно, пропускаю что-то очевидное здесь.

1
задан Stephen Jennings 9 May 2010 в 16:12
поделиться

1 ответ

Перейдите в студию управления sql и вызовите хранимую процедуру с @keywordlist как null. Вы видите какую-нибудь ошибку? Linq to SQL, помимо прочего, вызывает sproc с нулевым значением для обнаружения возвращаемых столбцов.

2
ответ дан 3 September 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: