提供的连接必须是 AstDbConnectionNode 类型
Supplied connections must be of type AstDbConnectionNode
我一直在研究一个简单的 BIML 解决方案,以开始学习如何使用它。我不断收到错误消息:
Supplied connections must be of type AstDbConnectionNode for this method.
at Varigence.Biml.Extensions.ExternalDataAccess.GetDatabaseSchema in :line 0
我一直在搜索和尝试不同的解决方案,但尚未找到答案。所以,我转向这里的每个人。我需要另一双眼睛来看待这个问题,这样我才能弄清楚我做错了什么。
我的第一个 BIML 文件在我的本地盒子上设置了与 World Wide Importers 的连接。
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#@ template language = "C#" tier="0" #>
<Connections>
<OleDbConnection
Name="src"
ConnectionString="Data Source=localhost\SQL16;Initial Catalog=WorldWideImporters;Provider=SQLNCLI11.1;Integrated Security=SSPI;"
CreateInProject = "true">
</OleDbConnection>
</Connections>
<Databases>
<Database Name="src" ConnectionName = "src" />
</Databases>
第二个 BIML 文件引发错误
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#@ template language = "C#" tier = "1" #>
<#@ import namespace="Varigence.Biml.CoreLowerer.SchemaManagement" #>
<# var srcDB = RootNode.OleDbConnections["src"]; #>
<# var WWIdb = srcDB.GetDatabaseSchema(ImportOptions.ExcludeViews); #>
<Packages>
<# foreach (var table in WWIdb.TableNodes) { #>
<Package Name="<#=table.Schema#>_<#=table.Name#>" ConstraintMode="Linear">
<Tasks>
<Dataflow Name="DF Copy <#=table.Name#>">
</Dataflow>
</Tasks>
</Package>
<# } #>
</Packages>
</Biml>
调用 GetDatabaseSchema
时出现误导性错误 我说这是误导性的,因为根本问题是 srcDB 为空。在您的第二个 Biml 文件中使用此代码亲自查看。
<#@ import namespace="System.Windows.Forms" #>
<#@ assembly name= "C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.dll" #>
<# var srcDB = RootNode.OleDbConnections["ConnectionDoesNotExist"]; #>
<#
if (srcDB == null)
{
MessageBox.Show("It's null");
}
else
{
MessageBox.Show("It's not null - {0}", srcDB.Name);
}
#>
根问题
您正在访问连接集合中不存在的对象 - 可能是因为当您的分层正确时,您需要在构建时 "include" 所有文件。
你是如何解决这个问题的?
如果您使用的是BimlExpress or BIDS Helper,那么您只需要select解决方案菜单中的file1.biml和file2.biml,然后右键单击生成包。
如果您使用的是 Mist/BimlStudio,那么我只需右键单击 file1.biml 并将其更改为 Convert to Live BimlScript。
我一直在研究一个简单的 BIML 解决方案,以开始学习如何使用它。我不断收到错误消息:
Supplied connections must be of type AstDbConnectionNode for this method. at Varigence.Biml.Extensions.ExternalDataAccess.GetDatabaseSchema in :line 0
我一直在搜索和尝试不同的解决方案,但尚未找到答案。所以,我转向这里的每个人。我需要另一双眼睛来看待这个问题,这样我才能弄清楚我做错了什么。
我的第一个 BIML 文件在我的本地盒子上设置了与 World Wide Importers 的连接。
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#@ template language = "C#" tier="0" #>
<Connections>
<OleDbConnection
Name="src"
ConnectionString="Data Source=localhost\SQL16;Initial Catalog=WorldWideImporters;Provider=SQLNCLI11.1;Integrated Security=SSPI;"
CreateInProject = "true">
</OleDbConnection>
</Connections>
<Databases>
<Database Name="src" ConnectionName = "src" />
</Databases>
第二个 BIML 文件引发错误
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#@ template language = "C#" tier = "1" #>
<#@ import namespace="Varigence.Biml.CoreLowerer.SchemaManagement" #>
<# var srcDB = RootNode.OleDbConnections["src"]; #>
<# var WWIdb = srcDB.GetDatabaseSchema(ImportOptions.ExcludeViews); #>
<Packages>
<# foreach (var table in WWIdb.TableNodes) { #>
<Package Name="<#=table.Schema#>_<#=table.Name#>" ConstraintMode="Linear">
<Tasks>
<Dataflow Name="DF Copy <#=table.Name#>">
</Dataflow>
</Tasks>
</Package>
<# } #>
</Packages>
</Biml>
调用 GetDatabaseSchema
时出现误导性错误 我说这是误导性的,因为根本问题是 srcDB 为空。在您的第二个 Biml 文件中使用此代码亲自查看。
<#@ import namespace="System.Windows.Forms" #>
<#@ assembly name= "C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.dll" #>
<# var srcDB = RootNode.OleDbConnections["ConnectionDoesNotExist"]; #>
<#
if (srcDB == null)
{
MessageBox.Show("It's null");
}
else
{
MessageBox.Show("It's not null - {0}", srcDB.Name);
}
#>
根问题
您正在访问连接集合中不存在的对象 - 可能是因为当您的分层正确时,您需要在构建时 "include" 所有文件。
你是如何解决这个问题的?
如果您使用的是BimlExpress or BIDS Helper,那么您只需要select解决方案菜单中的file1.biml和file2.biml,然后右键单击生成包。
如果您使用的是 Mist/BimlStudio,那么我只需右键单击 file1.biml 并将其更改为 Convert to Live BimlScript。