我已经创建了一个存储过程,我将其拖到我的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));
}
这是存储过程的一部分。这很简单。
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
答案 0 :(得分:5)
ISingleResult<T>
继承IEnumerable<T>
。 是一个集合。
这是单个结果,而不是多个结果,如多个结果集:
SELECT *
FROM Table1
SELECT *
FROM Table2
这样的存储过程不会返回ISingleResult<T>
。