我在SSIS的BIML中使用c#。我的问题主要是关于以下片段。主要思想是为 SSIS 中的动态暂存过程导入配置表。
代码片段
<# var tables =
ExternalDataAccess.GetDataTable(sourceConnection.ConnectionString, "SELECT
* FROM ImportTable").Rows.OfType<System.Data.DataRow>().Select(r =>
r[0].ToString()); #>
它抛出以下错误:
无法将类型 'string' 转换为 'System.Data.DataRow'。
第一个问题:我不得不说我真的不明白那里发生了什么。似乎该程序正在 SQL 数据库上查找原始 DataTable 的 DataType。有人可以解释这里发生的事情并知道如何修复错误吗?
第二个问题:片段的最后一部分发生了什么?
Select(r => r[0].ToString());
我的第一个猜测是它选择所有大于或等于表中第一行的行并将其转换为字符串?
我的完整代码:
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.OleDb" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Linq" #>
<#@ template language="C#" tier="2" #>
<# var sourceConnection =
(AstDbConnectionNode)RootNode.Connections["Source"]; #>
<# var importedSchema = sourceConnection.ImportDB("", "",
ImportOptions.ExcludeForeignKey | ImportOptions.ExcludeColumnDefault |
ImportOptions.ExcludeViews); #>
<# var tables =
ExternalDataAccess.GetDataTable(sourceConnection.ConnectionString, "SELECT
* FROM ImportTable").Rows.OfType<System.Data.DataRow>().Select(r =>
r[0].ToString()); #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
***BIML-Code***
</Packages>
</Biml>