数据库
首页 > 数据库> > c#-Linq2Sql Designer将存储过程的多个结果集转换为单个

c#-Linq2Sql Designer将存储过程的多个结果集转换为单个

作者:互联网

linq2sql类中,我调用了一个存储过程,该存储过程返回多个结果集,并且该方法有效.

每当我在linq2sql设计器中添加新过程时,它都会将上述存储过程从IMultipleResults隐式转换为designer.cs中的ISingleResult.

我用以前的版本替换了代码,并且可以使用,但是为什么会这样呢?

如何防止设计人员更改有效的代码?

每次添加新sp时,都必须撤消设计人员的工作.

这个

[Function(Name="dbo.GetCustomerOrderDetails")]
[ResultType(typeof(GetCustomerOrderSummaryResult))]
[ResultType(typeof(GetOrderLineDetailsResult))]

public IMultipleResults GetCustomerOrderDetails([Parameter(DbType="UniqueIdentifier")] System.Nullable<System.Guid> custGuid, [Parameter(DbType="VarChar(75)")] string email, [Parameter(DbType="Int")] System.Nullable<int> orderId)
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), custGuid, email, orderId);
       return (IMultipleResults)result.ReturnValue;
}

由linq2sql设计器更改为此

[Function(Name="dbo.GetOrderLineDetails")]
public ISingleResult<GetOrderLineDetailsResult> GetOrderLineDetails([Parameter(DbType="Int")] System.Nullable<int> orderId)
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), orderId);
    return ((ISingleResult<GetOrderLineDetailsResult>)(result.ReturnValue));
}

我最终手动撤消.

解决方法:

由OR设计器创建的派生DataContext类被声明为部分类.创建另一个扩展该部分类的文件,将OR设计器不断更改的特定代码以及GetOrderLineDetailsResult类移动到该文件中.然后从OR设计器中删除sp.设计师现在应该保持您的代码不变.

标签:linq-to-sql,asp-net-3-5,linq,c
来源: https://codeday.me/bug/20191024/1918712.html