Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# MSLinqToSqlGenerator如何确定存储过程的返回类型? 我有一个存储的procudre SP,如下所示:_C#_Visual Studio 2008_Sql Server 2005_Linq To Sql - Fatal编程技术网

C# MSLinqToSqlGenerator如何确定存储过程的返回类型? 我有一个存储的procudre SP,如下所示:

C# MSLinqToSqlGenerator如何确定存储过程的返回类型? 我有一个存储的procudre SP,如下所示:,c#,visual-studio-2008,sql-server-2005,linq-to-sql,C#,Visual Studio 2008,Sql Server 2005,Linq To Sql,当我将SP添加到dbml designer的SP窗格时,我希望MSLinqToSqlGenerator将ISingleResult创建为返回值类型。令我惊讶的是,返回值类型是int。显然,生成器正在使用某些标准来确定返回值类型。我还有其他类似的SP返回ISingleResult类型 有人知道是什么导致发电机出现这种情况吗 顺便说一句,这个网站上有人建议重新创建SP,从dbml中删除引用,重新启动Visual Studio VS并再次将其添加到dbml中。我经历了所有这些都没有用 我的怀疑在于临时

当我将SP添加到dbml designer的SP窗格时,我希望MSLinqToSqlGenerator将ISingleResult创建为返回值类型。令我惊讶的是,返回值类型是int。显然,生成器正在使用某些标准来确定返回值类型。我还有其他类似的SP返回ISingleResult类型

有人知道是什么导致发电机出现这种情况吗

顺便说一句,这个网站上有人建议重新创建SP,从dbml中删除引用,重新启动Visual Studio VS并再次将其添加到dbml中。我经历了所有这些都没有用

我的怀疑在于临时桌上的人失踪了

欢迎任何意见或建议

谢谢


Cullen

在特殊条件下非常简单

SQL允许您在不调用过程的情况下查询resultset架构

在不太特殊的条件下*,SQL将在每次调用时为您提供备用答案


*那些有IF语句的。这可能是故意的。我对SQL的了解还不足以回答这个问题。

在特殊条件下,它非常简单

SQL允许您在不调用过程的情况下查询resultset架构

在不太特殊的条件下*,SQL将在每次调用时为您提供备用答案

*那些有IF语句的。这可能是故意的。我对SQL的了解还不足以回答这个问题。

我在最初的帖子中提到我怀疑临时表。临时表是通过SELECT INTO PeopleCameMissing命令创建的,因此其定义是动态的,因此当存储过程添加到dbml设计器时,生成器对表的定义没有任何线索。如果我让生成器知道表定义,也许我可以得到所需的返回类型。基于这个推测,我做了一个测试。我宣布一个表格如下: 并将原声明修改如下:


    INSERT INTO @PeopleCameMissing (
        MemberID,
        FirstName,
        MiddleName,
        LastName,
        Suffix,
        PhoneHome,
        PhoneCell,
        Email)
    SELECT 
        c.MemberID,
        c.FirstName,
        c.MiddleName,
        c.LastName,
        c.Suffix,
        c.PhoneHome,
        c.PhoneCell,
        c.Email
        FROM [dbo].[Members] c
        WHERE c.MemberID IN (SELECT a.MemberID FROM #PeopleCameMissing a)
        ORDER BY c.LastName,c.FirstName;

    DROP TABLE #PeopleCameMissing;

    SELECT * 
        FROM @PeopleCameMissing 
        ORDER BY LastName,FirstName;

然后我再次将存储过程添加到dbml设计器中。这一次,生成器创建了所需的返回类型:ISingleResult。这似乎证明了我的猜测。

我在最初的帖子中提到我怀疑临时表。临时表是通过SELECT INTO PeopleCameMissing命令创建的,因此其定义是动态的,因此当存储过程添加到dbml设计器时,生成器对表的定义没有任何线索。如果我让生成器知道表定义,也许我可以得到所需的返回类型。基于这个推测,我做了一个测试。我宣布一个表格如下: 并将原声明修改如下:


    INSERT INTO @PeopleCameMissing (
        MemberID,
        FirstName,
        MiddleName,
        LastName,
        Suffix,
        PhoneHome,
        PhoneCell,
        Email)
    SELECT 
        c.MemberID,
        c.FirstName,
        c.MiddleName,
        c.LastName,
        c.Suffix,
        c.PhoneHome,
        c.PhoneCell,
        c.Email
        FROM [dbo].[Members] c
        WHERE c.MemberID IN (SELECT a.MemberID FROM #PeopleCameMissing a)
        ORDER BY c.LastName,c.FirstName;

    DROP TABLE #PeopleCameMissing;

    SELECT * 
        FROM @PeopleCameMissing 
        ORDER BY LastName,FirstName;

然后我再次将存储过程添加到dbml设计器中。这一次,生成器创建了所需的返回类型:ISingleResult。这似乎证明了我的猜测


    INSERT INTO @PeopleCameMissing (
        MemberID,
        FirstName,
        MiddleName,
        LastName,
        Suffix,
        PhoneHome,
        PhoneCell,
        Email)
    SELECT 
        c.MemberID,
        c.FirstName,
        c.MiddleName,
        c.LastName,
        c.Suffix,
        c.PhoneHome,
        c.PhoneCell,
        c.Email
        FROM [dbo].[Members] c
        WHERE c.MemberID IN (SELECT a.MemberID FROM #PeopleCameMissing a)
        ORDER BY c.LastName,c.FirstName;

    DROP TABLE #PeopleCameMissing;

    SELECT * 
        FROM @PeopleCameMissing 
        ORDER BY LastName,FirstName;