Skip to content

SqlServer Select 相同列名到 DataSet 时出错?

🏷️ SQL Server

Select 两个相同列名的数据到 DataSet

假设列名为【Comment】,线下获取的 DataSet 中,第二个【Comment】会自动变为【Comment1】;

线上则报错【多次为 PagedPersons 指定了 Comment 列】


发现只有翻页时才会出错,第一页时线上线下都正常;翻页时线上线下都出错了。

原因:由于使用了 FluentData 框架,翻页时的代码如下。

cs
var pagedSql = string.Format(@"with PagedPersons as
(
    select top 100 percent {0}, row_number() over (order by {1}) as FLUENTDATA_ROWNUMBER
    {2}
)
select *
from PagedPersons
where fluentdata_RowNumber between {3} and {4}",
                data.Select,
                data.OrderBy,
                sql,
                data.GetFromItems(),
                data.GetToItems());

错误信息是指多次为临时表【PagedPersons】指定了【Comment】列,导致了异常。