proprietà Connection in TableAdapters è definito come interna.
internal global::System.Data.SqlClient.SqlConnection Connection
Quindi, nel caso in cui il vostro TypedDataset non è nel stesso assieme come le finestre principali forme applicazione, non sarà in grado di accedere proprietà Connection. Questo problema potrebbe essere visualizzato in un secondo momento quando si rafforza il codice del set di dati in un progetto separato che produce un proprio assieme indipendente.
Per risolvere questo problema, è possibile fare come indicato di seguito.
creare una classe parziale per il TableAdapter e aggiungere un altro costruttore accanto al costruttore pubblico senza parametri predefinito. Assumendo tipo TableAdapter come MyTableAdapter
public partial class MyTableAdapter
{
public MyTableAdapter(SqlConnection connection)
{
thisSetConnection(connection);
this.ClearBeforeFill = true;
}
public void SetConnection(SqlConnection connection)
{
this._connection = connection;
}
}
Sarà necessario fare questo per come molti come TableAdapters avete nel vostro progetto. TableAdapter non ha una classe base comune, ma grazie al fatto che sono dichiarati come classi parziali, quindi siamo in grado di farlo come sopra menzionato.
Ora in fase di esecuzione, è possibile creare un'istanza del TableAdapter come questo ..
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter(connection);
o può essere anche assegnarlo più tardi, dopo aver creato l'istanza TableAdapter con predefinito senza parametri costruttore pubblico ..
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter();
adapter.(connection);
fonte
2010-05-27 08:13:53
A partire da VS2010 la visibilità della connessione può essere s specificato (ad es. pubblico) e una classe base per i DataTableAdapters generati può specificare ... (cioè, questo post è principalmente correlato a VS2008 e problemi precedenti :-) –