Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架5中使用复杂类型的存储过程?_C#_Sql Server 2008_Entity Framework 5 - Fatal编程技术网

C# 在实体框架5中使用复杂类型的存储过程?

C# 在实体框架5中使用复杂类型的存储过程?,c#,sql-server-2008,entity-framework-5,C#,Sql Server 2008,Entity Framework 5,我在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

我在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

现在它就像一个符咒:-)

您是如何生成
复杂类型的?您的问题中是否可以包含?您是否尝试
获取列信息
?如果是这样,它是什么样子的?正如我在编辑部分所描述的,每当我点击
Get Column Information
按钮时,什么都不会发生!很抱歉,我没有注意到,请尝试从模型浏览器中删除您的
复杂类型
存储过程
函数导入
或与之相关的
fulltextsearchContent
,然后从数据库中更新您的模型
我已经完成了,并再次导入了存储过程,但是没有什么变化看起来很好-只是为了完整起见,这里有一些信息如果VS试图获取列信息会发生什么: