5

私がやろうとしているtableのは、空のデータベースで接続が開かれたときに、オンザフライで作成することです。私はすでに to を使用してモデルを作成し、LinqSqliteでないデータベースで正常に使用しました。

現在、「新しい」データベースを操作しようとしています。

私は次のように db.Insert を実行します:

    using (MyDB db = MyDB("MyConnectionName"))
    {
            Person d = new Person()
            {
                name = "mimi"
            };

            db.Insert(d);

            myLabel.Content = db.Drivers.First().name;
        }
    }

空のデータベースが開かれました。実際には 0KB のファイルが作成されます。しかし、何かを挿入しようとすると (またはもちろん何かを読み取ろうとすると)、例外が発生します。SQL logic error or missing database

私が使用しているライブラリ:

https://github.com/linq2db/linq2db

NuGetパッケージ:

http://nuget.org/packages/linq2db.SQLite/

空のデータベース ファイルへの書き込みを開始する前に、何かする必要がありますか?

4

2 に答える 2

11

Linq2DB はテーブルを自動的に作成しません。したがって、テーブルが存在するかどうかを確認し、存在しない場合は作成する必要があります。次の方法で実行できます。

    var sp = db.DataProvider.GetSchemaProvider();
    var dbSchema = sp.GetSchema(db);
    if(!dbSchema.Tables.Any(t => t.TableName == "Person"))
    {
       //no required table-create it
       db.CreateTable<Person>();
    }

残念ながら、ドキュメントの一部が不足しています。ただし、 test sampleを使用できます。

于 2015-10-14T07:37:35.290 に答える