Connection-Eigenschaft in Tableadapter als internen definiert ist.
internal global::System.Data.SqlClient.SqlConnection Connection
Also falls Ihr TypedDataset ist nicht in die gleiche Anordnung wie Ihre Hauptfenster Formen App, die Sie nicht Zugang Connection-Eigenschaft können. Dieses Problem könnte später auftreten, wenn Sie Ihren Datensatzcode umgestalten und ihn in ein separates Projekt verschieben, das seine eigene unabhängige Baugruppe erzeugt.
Um dieses Problem zu lösen, können Sie wie unten beschrieben vorgehen.
Erstellen Sie eine partielle Klasse für Ihren TableAdapter und fügen Sie neben dem standardmäßigen öffentlichen parameterlosen Konstruktor einen weiteren Konstruktor hinzu. Unter der Annahme, Table Typ als MyTableAdapter
public partial class MyTableAdapter
{
public MyTableAdapter(SqlConnection connection)
{
thisSetConnection(connection);
this.ClearBeforeFill = true;
}
public void SetConnection(SqlConnection connection)
{
this._connection = connection;
}
}
Sie müssen dies als Tableadapter für so viele tun Sie in Ihrem Projekt haben. TableAdapter hat keine gemeinsame Basisklasse, aber danke, dass sie als partielle Klassen deklariert sind, so dass wir es wie oben beschrieben machen können.
Jetzt zur Laufzeit, können Sie eine Instanz der Table wie diese schaffen ..
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter(connection);
oder sogar später zuweisen, nachdem Sie die Table Instanz mit Standard parameterlos öffentlichen Konstruktor erstellen ..
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter();
adapter.(connection);
Ab VS2010 kann die Sichtbarkeit der Verbindung s sein pecified (z.B. public) und eine Basisklasse für die generierten DataTableAdapters kann angegeben werden ... (das heißt, dieser Beitrag bezieht sich hauptsächlich auf VS2008 und vorherige Ausgaben :-) –