我想构建一个动态脚本组件作为多表的源和目标。我刚从Microsoft Page的示例开始。它适用于特定表,但现在需要将其转换为所有表的动态,但需要您的帮助。
首先,我想通过下面的 sql 查询动态生成“MyAddressOutputBuffer.Column”部分。
SqlCommand cmdMeta = new SqlCommand(@"
select ColumnMapping = ' MyAddressOutputBuffer.Column'+cast(RANK() OVER(ORDER BY c.name)-1 as varchar(5))+' = sqlReader.GetValue(' + cast(RANK() OVER(ORDER BY c.name) - 1 as varchar(5)) + ').ToString();'
from sys.tables t
inner join sys.columns c on t.object_id = c.object_id
where t.name = 'Address'", sqlConn);
sqlReaderMeta = cmdMeta.ExecuteReader();
上面的代码给出了预期的结果,但不确定如何用下面的部分硬编码映射替换:
public override void CreateNewOutputRows()
{
while (sqlReader.Read())
{
{
MyAddressOutputBuffer.AddRow();
MyAddressOutputBuffer.AddressID = sqlReader.GetValue(0).ToString(); // I use getVAlue for all data types.
MyAddressOutputBuffer.City = sqlReader.GetValue(1).ToString();
}
}
}
有没有办法说 C# 运行从上面的 sql 返回而不是硬编码的动态查询?