我在 SSIS 中的 BIML 中使用 c#。我的问题主要是关于以下代码段。主要思想是在SSIS中为动态登台过程导入Config表。
代码段
<# 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>