当我想要一个集合时,dbml从我的存储过程生成ISingleResult <object>

Bil*_*rim 1 c# linq-to-sql

我已经创建了一个存储过程,我已将其拖到我的dbml文件中,期望它创建一个返回对象集合的方法.但是它只给了我一个返回ISingleResult的方法.

我的存储过程创建一个表变量,用数据填充它,然后从该表中选择所有变量.

知道我做错了什么吗?我可以发布代码,如果这将有所帮助.

编辑.这是dbml生成的代码

[Function(Name="dbo.gr_RecentActions")]
public ISingleResult<Action> gr_RecentActions([Parameter(Name="UserID", DbType="UniqueIdentifier")] System.Nullable<System.Guid> userID)
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), userID);
    return ((ISingleResult<Action>)(result.ReturnValue));
}
Run Code Online (Sandbox Code Playgroud)

这是存储过程的一部分.这几乎是直截了当的.

    ALTER PROCEDURE [dbo].[gr_RecentActions]
@UserID UNIQUEIDENTIFIER
AS
BEGIN

DECLARE @RecentActions AS TABLE (UserId UNIQUEIDENTIFIER, UserID1 UNIQUEIDENTIFIER, Name VARCHAR(500), GiftID UNIQUEIDENTIFIER, ActionType VARCHAR(20), ActionDate DATETIME)

DECLARE @Friends AS Table (Userid UNIQUEIDENTIFIER)

INSERT INTO @Friends (Userid)
    (SUBQUERY...)



INSERT INTO @RecentActions (UserId, UserId1, Name, GiftID, ActionType, ActionDate)
    SELECT userid, NULL, Name, g.GiftId, 'GiftAdded', DateCreated FROM Gift g 
    WHERE UserId IN 
        (select UserId from @Friends)

/* SNIP.... SIMILAR CODE TO ABOVE */


SELECT * FROM @RecentActions ORDER BY ActionDate DESC
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 5

ISingleResult<T>继承IEnumerable<T>.这一个集合.

它是单个结果而不是多个结果,如多个结果集:

SELECT *
FROM Table1

SELECT *
FROM Table2
Run Code Online (Sandbox Code Playgroud)

像这样的存储过程不会返回ISingleResult<T>.