5

我要做的是table在空数据库上打开连接时动态创建一个。我已经用Linqto创建了模型,Sqlite并成功地将它与非空数据库一起使用。

现在我正在尝试使用“新”数据库。

我这样做我的 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>();
    }

不幸的是,缺少一些文档。但是你可以使用测试样本

于 2015-10-14T07:37:35.290 回答
-1

你不打开数据库。

MyDB db = MyDB("MyConnectionName") <- 创建数据库。

db.open(); <-添加这个。

然后你就可以正常操作了。

于 2014-05-19T00:48:18.610 回答