Verbindung zu SQLite-Datenbank, Relationen nachträglich hinzufügen

Um die Verbindung zu einer SQLite-Datenbank herzustellen können Sie normalerweise direkt den SQLiteConnectionDataProvider verwenden. Wenn in der Datenbank allerdings keine Relationen vorhanden sind und Sie diese nachträglich hinzufügen möchten, müssen Sie anders vorgehen:

Verwenden Sie stattdessen eine Instanz des DbCommandSetDataProvider. Sie können die Tabellen und Relationen dann wie folgt hinzufügen:

using (ListLabel LL = new ListLabel())
{
    // use reflection to make sure to create the "right" SQLiteConnection (i.e. the one used internally)
    Type type = DataProviderHelper.GetSQLiteConnectionType();
    IDbConnection conn = Activator.CreateInstance(type, @"data source=c:\temp\BoxBuddy.db") as IDbConnection;

    // create generic DbCommand host provider
    DbCommandSetDataProvider provider = new DbCommandSetDataProvider();

    // add first table
    var cmd1 = conn.CreateCommand();
    cmd1.CommandText = "SELECT * from TableA";
    provider.AddCommand(cmd1, "TableA", "\"{0}\"", "@{0}");

    // add Box table
    var cmd2 = conn.CreateCommand();
    cmd2.CommandText = "SELECT * from TableB";
    provider.AddCommand(cmd2, "TableB", "\"{0}\"", "@{0}");

    // manually add relation
    provider.AddRelation("TableAtoTableB", "TableA", "TableB", "ID", "FK_ID");

    // assign data source
    LL.DataSource = provider;

    // call the designer
    LL.Design();
}