1

我正在使用 Visual Studio 2008,我创建了一个存储过程,可以选择两个不同的结果集。我将存储的 proc 拖到 linq to sql dbml datacontext 类上,导致 Visual Studio 在 cs 文件中创建以下代码:

[Function(Name="dbo.List_MultiSelect")]
public ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult> List_MultiSelect()
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
    return ((ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult>)(result.ReturnValue));
}

设计师不应该生成使用 IMultipleResults 的代码吗?还是我必须手动编码?

4

1 回答 1

1

使用设计器将返回,ISingleResult而使用 SqlMetal 将生成IMultipleResult您所期望的。否则,是的,你可能不得不跳进去直接调整它。

一种简单的方法是使用 SqlMetal,然后复制/粘贴它生成的代码。请记住,将其粘贴到设计器代码中可能并不理想,因为后续代码生成将覆盖它。也许您可以将相关代码移动到部分类以避免此问题。

我在这里的详细回答解决了这个问题:SqlMetal wrongly generate the return type of my stored proc (LINQ)

于 2010-02-02T21:08:47.347 回答