我在SQL Server中以下存储过程:
ALTER PROCEDURE [dbo].[FullTextSearchOnContent]
(
@SearchText NVARCHAR(200),
@LanguageId INT ,
@ContentStatusId INT ,
@ResultCount INT
)
AS
BEGIN
SET FMTONLY OFF;
SET NOCOUNT ON;
IF (@SearchText IS NULL) OR (@SearchText = '') OR (@ResultCount IS NULL) OR (@ResultCount = 0) RETURN NULL;
SELECT DISTINCT TOP(@ResultCount)
C.Id AS ContentId, C.ImagePath AS ContentImagePath, C.IsSpecial,C.LanguageId,C.LockCommenting,C.RegistrationDate AS ContentRegistrationDate,C.StatusId AS ContentStatusId,C.Summary,C.Title,C.VisitNumber,C.AllTagsString,
CS.FarsiName AS ContentStatusFarsiName,
U.Id As UserId,U.InitialReputation AS UserInitialReputation,U.IsAdmin AS IsUserAdmin,U.FullName AS UserFullName,U.PhotoPath AS UserPhotoPath,U.RoleId AS UserRoleId,U.UserStatusId AS UserStatusId
--,T.Id AS TagId, T.Name AS TagName
FROM Content AS C
INNER JOIN [User] AS U ON U.Id = C.WriterId
INNER JOIN [Subject] AS S ON S.Id = C.SubjectId
INNER JOIN [ContentStatus] AS CS ON CS.Id = C.StatusId
--INNER JOIN (SELECT DISTINCT * FROM Tag AS T
-- INNER JOIN TagContent AS TC ON TC.TagId=T.Id)
-- AS T ON T.ContentId = C.Id
WHERE C.LanguageId = @LanguageId AND C.StatusId=@ContentStatusId AND CONTAINS((C.Title,C.AllTagsString),@SearchText) ORDER BY C.RegistrationDate DESC
END
它用于一些列的全文检索。
我想在EF5使用它,但它总是返回int
!
我如何使用它在实体框架5?
编辑:
我无法生成COMLEX类型,每当我点击Get Column Information
按钮没有发生!
我刚刚找到了答案。
我已经改变了存储过程如下所示:
ALTER PROCEDURE [dbo].[FullTextSearchOnContent]
(
@SearchText NVARCHAR(200),
@LanguageId INT ,
@ContentStatusId INT ,
@ResultCount INT
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ReturnTable table
(
ContentId int not null,
LanguageId int null,
ContentStatusId int null,
ContentTitle nvarchar(2000) null,
ContentSummary nvarchar(2000) null,
ContentImagePath nvarchar(50) null,
IsSpecial bit null,
LockCommenting bit null,
VisitNumber int null,
AllTagsString nvarchar(max) null,
ContentRegistrationDate datetime not null,
ContentStatusFarsiName nvarchar(50) null,
UserId int null,
UserInitialReputation int null,
IsUserAdmin bit null,
UserFullName nvarchar(71) null,
UserPhotoPath nvarchar(50) null,
UserRoleId int null,
UserStatusId int null,
SubjectId int not null,
SubjectName nvarchar(50) null,
SubjectSymbolPath nvarchar(1000) null
)
IF (@SearchText IS NULL) OR (@SearchText = '') OR (@ResultCount IS NULL) OR (@ResultCount = 0) RETURN NULL;
INSERT @ReturnTable
SELECT DISTINCT TOP(@ResultCount)
C.Id AS ContentId,
C.LanguageId,
C.StatusId AS ContentStatusId,
C.Title AS ContentTitle,
C.Summary AS ContentSummary,
C.ImagePath AS ContentImagePath,
C.IsSpecial,
C.LockCommenting,
C.VisitNumber,
C.AllTagsString,
C.RegistrationDate AS ContentRegistrationDate,
CS.FarsiName AS ContentStatusFarsiName,
U.Id As UserId,
U.InitialReputation AS UserInitialReputation,
U.IsAdmin AS IsUserAdmin,
U.FullName AS UserFullName,
U.PhotoPath AS UserPhotoPath,
U.RoleId AS UserRoleId,
U.UserStatusId AS UserStatusId,
S.Id AS SubjectId,
S.Name AS SubjectName,
S.SymbolPath AS SubjectSymbolPath
--,T.Id AS TagId, T.Name AS TagName
FROM Content AS C
INNER JOIN [User] AS U ON U.Id = C.WriterId
INNER JOIN [Subject] AS S ON S.Id = C.SubjectId
INNER JOIN [ContentStatus] AS CS ON CS.Id = C.StatusId
--INNER JOIN (SELECT DISTINCT * FROM Tag AS T
-- INNER JOIN TagContent AS TC ON TC.TagId=T.Id)
-- AS T ON T.ContentId = C.Id
WHERE C.LanguageId = @LanguageId AND C.StatusId=@ContentStatusId AND CONTAINS((C.Title,C.AllTagsString),@SearchText) ORDER BY C.RegistrationDate DESC
select * from @ReturnTable
--SELECT TOP(@ResultCount) * from Content order by RegistrationDate desc
END
现在,它就像一个魅力:-)