2017-12-11 7 views
1

ich eine Verbindung in Biml habe:Referenz eine Biml Connection in Bimlscript (C# Control-Nuggets)

<Connections> 
     <OleDbConnection Name="MyConn" ConnectionString="Data Source=localhost;Initial Catalog=MyDB;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;" CreateInProject="true"/> 
</Connections> 

Ich habe auch Steuer Nuggets Code aC# eine Datentabelle aus der Datenbank (MyDB) zu erhalten:

<# 
    string ConnectionString = "Data Source=localhost;Initial Catalog=MyDB;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;"; 
    DataTable MyTable; 
    MyTable = ExternalDataAccess.GetDataTable(ConnectionString,"SELECT * from dbo.MyTable"); 
#> 

Ist es möglich, nicht die Verbindungszeichenfolge und Referenz „MyConn“ direkt in Bimlscript zu wiederholen? Ich meine, so etwas wie:

<# 
DataTable = MyTable;  
MyTable = ExternalDataAccess.GetDataTable(MyConn,"SELECT * from dbo.MyTable"); 
#> 

Danke, Ziad

+0

Sie haben gerade geschrieben, wie es geht. Sie können CONNECTIONSTRING überall in Ihrem Skript wiederverwenden. – plaidDK

+0

Es funktioniert nicht so, weil "MyConn" der OledbConnection-Name eines Biml-Attributs ist und innerhalb der Verbindungszeit und des ConnectionString-Parameters in GetDataTable() C# -Parameter ist, damit der Compiler das Biml-Attribut nicht erkennen kann als .NET-String möglich. Die Idee, dass ich die (String ConnectionString) im zweiten Codeblock in meinem Beispiel loswerden und MyConn resuse, die in der Biml OldebConnectoin-Tag als Parameter für GetDataTable() - Funktion definiert ist –

+0

Sorry, ich habe Ihre nicht verstanden Frage dann. Aber jetzt tue ich, und du kannst nicht tun, was du willst. Sie müssen eine Variable definieren. Sie können keine BIML-Connectionstrings innerhalb Ihrer C# -Variablen verwenden. Sie können diese Verbindung jedoch überall wiederverwenden. Sogar innerhalb von BIML-Tags. Aber du kannst es nicht umgekehrt tun. Ihre BIML-Verbindung ist nur PROJECT- oder PACKAGE-aktivierte Verbindungen. Sie können nicht zum Abrufen von C# -Daten verwendet werden. – plaidDK

Antwort

2

Mobile im Moment, aber Code etwa

ExternalDataAccess.GetDataTable((AstDbConnectionNode)RootNode.Connections["MyConn"],"SELECT * ...); 

Dies setzt voraus, dass die Verbindung definiert worden war, managt, wie ich on my other answer

diskutiert

Sie können über die RenderedConnectionString-Eigenschaft auch auf die Verbindungszeichenfolge von einem Verbindungsobjekt zugreifen y

+0

Danke @billinkc. Es wackelte genau so, wie ich es wollte. Es gibt nur eine kleine Sache, dass wir die Verbindung zu AstDbConnectionNode casted sollte. so dass der endgültige Code wie folgt aussieht: ExternalDataAccess.GetDataTable ((AstDbConnectionNode) RootNode.Connections [ "MyConn"], "SELECT * ...); –