verwendetes Datenbanksystem: SQLServer
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte ein Dataset validieren. Das heißt, ich möchte prüfen, ob das Dataset noch zu der aktuellen Datenbank-Version passt. Wenn sich beispielsweise ein Tabellenname ändert, soll mir die Methode mitteilen, dass ich das Dataset anpassen muss (natürlich etwas dataillierter).
Frage dazu:
Gibt es eine Möglichkeit vom DataSet auf die zugehörigen TableAdapter zu kommen? Oder kann ich sonst irgendwie ausgehend von den Informationen eines DataSets eine Abfrage auf die Datenbank ausführen?
Konkretes Beispiel:
Ich möchte schreiben:
string.Format("Select * from {0}.{1}", sqServerSchemaName, sqlServerTableName);
Ich habe zur Verfügung: Das DataSet (und damit die DataTable).
Kann mir jemand helfen?
Ich habe es mittlerweile über Reflection gelöst. Ist natürlich unschön, funktioniert für meinen Anwendungsfall aber erst einmal:
... //Ermittlung dataSetNamespace (auch über Reflection)
foreach (DataTable table in dataSet.Tables)
{
string typeName = dataSetNamespace + "." + dataSet.DataSetName + "TableAdapters." + table.TableName + "TableAdapter";
object objAdapter = assembly.CreateInstance(typeName);
SqlDataAdapter dataAdapter = RetrieveValueFromInstanceProperty<SqlDataAdapter>(objAdapter, "Adapter"); //Hilfsmethode
SqlCommand[] commandCollection = RetrieveValueFromInstanceProperty<SqlCommand[]>(objAdapter, "CommandCollection"); //Hilfsmethode
dataAdapter.SelectCommand = commandCollection[0];
dataAdapter.Fill(dataSet);
}
Falls jemand eine bessere Lösung hat, her damit!