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