重用查询SqlExpression导致System.ArgumentException SqlParameter已包含在另一个SqlParameterCollection中

问题描述 投票:0回答:1

使用OrmLite ServiceStack,我确实这样查询了选择列表和总计计数:

public async Task<OrmInvoice> OrmTest(int Id)
    {
        var q = OrmDb.From<OrmInvoice>().Where(o => o.Id == Id);
        var rs1 = await OrmDb.SelectAsync(q);
        var rs2 = await OrmDb.CountAsync(q);

        var q2 = q.Clone(); //try to clone            
        var rs3 = await OrmDb.CountAsync(q2);

        return null;
    }

i仅通过rs1和rs2测试=>错误尝试克隆,rs3 =>相同的错误

Caught System.ArgumentException

System.ArgumentException: The SqlParameter is already contained by another SqlParameterCollection.
  at System.Data.SqlClient.SqlParameterCollection.Validate
  at System.Data.SqlClient.SqlParameterCollection.Add
  at ServiceStack.OrmLite.OrmLiteReadCommandExtensions.SetParameters

我受困,从ormlite的基地不知道为什么会发生此问题?感谢您的帮助!

ormlite-servicestack
1个回答
0
投票

您应该在第二次查询之前清除参数。

© www.soinside.com 2019 - 2024. All rights reserved.