我一直在研究一个简单的BIML解决方案,开始学习如何使用它。我不断收到错误消息:
对于此方法,提供的连接必须是AstDbConnectionNode类型。 at Varigence.Biml.Extensions.ExternalDataAccess.GetDatabaseSchema in:line 0
我一直在寻找和尝试不同的解决方案,但尚未找到答案。所以,我转向这里的每个人。我需要另外一套眼睛,这样我才能弄明白我做错了什么。
我的第一个BIML文件已将我的连接设置为本地盒子上的全球导入程序。
Distinct()
第二个BIML文件是抛出错误
<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>
答案 0 :(得分:1)
那个误导性的错误表面来自对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);
}
#>
您正在访问不存在的连接集合中的对象 - 可能是因为在您的分层正确时,您需要在构建时“包含”所有文件。
如果您正在使用BimlExpress或BIDS Helper,则只需在解决方案菜单中选择file1.biml和file2.biml,然后右键单击以生成包。
如果您使用的是Mist/BimlStudio,那么我只需右键单击file1.biml并将其更改为转换为Live BimlScript。