Ich versuche, erweiterte Eigenschaften für Tabellen und Spalten in einer Winforms C # -Anwendung zu lesen. Ich verwende dazu SQL Server SMO. Wenn ich die Anwendung ausführe, werden die erweiterten Eigenschaften nicht angezeigt. Wenn ich jedoch die erweiterten Eigenschaften mit PowerShell lese, werden die erweiterten Eigenschaften angezeigt.
Der C # -Code:
var x = col.ExtendedProperties.Count;
var NPI = col.ExtendedProperties["NPI"].Value;
bool npi = bool.Parse(NPI.ToString());
Der PowerShell-Code:
Add-Type -AssemblyName "Microsoft.SqlServer.Smo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $env:COMPUTERNAME
$server.Databases["<db name>"].Tables["<table name>"].Columns["<column name>"].ExtendedProperties | Select Name, Value, State
Ich habe überprüft, dass sowohl Visual Studio als auch PowerShell dieselbe Version von SMO (11.0.0.0) verwenden. Wenn ich den C # -Code ausführe, ist col.ExtendedProperties.Count = 0, aber wenn ich den PowerShell-Code ausführe, erhalte ich:
Name Value State
---- ----- -----
NPI False Existing
Hat jemand eine Idee, warum dies passieren könnte?
zusätzliche Information
Im C # -Code öffne ich einen DataReader für eine Tabelle mit:
sourceServer.ConnectionContext.ExecuteReader(<select command>)
um die Daten aus der Tabelle abzurufen. Ich gehe dann mit DataReader in eine while-Schleife und in dieser while-Schleife habe ich:
foreach (Column col in sourceTable.Columns)
{
StringBuilder cleanData = CleanseColumn(col, dr[col.Name].ToString());
sbvalues.Append("'" + cleanData + "', ");
}
Wenn ich durch die gehe, hat foreach
die sourceTable
Variable ihre erweiterte Eigenschaft, die col
Spaltenvariable jedoch nicht.