用Linq到Sqlite创建表(linq2db)

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

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

我做我的db.Insert如下:

  using (MyDB db = MyDB("MyConnectionName")) { Person d = new Person() { name = "mimi" }; db.Insert(d); myLabel.Content = db.Drivers.First().name; } } 

打开一个空数据库确定。 实际上是为它创建了一个0KB的文件。 但是当我尝试在其中插入某些内容(或者当然是读取内容)时,我得到一个exception: SQL logic error or missing database

我正在使用的库:

https://github.com/linq2db/linq2db

NuGet包:

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

在开始写入空数据库文件之前,我需要做些什么吗?

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(); } 

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

我希望它有所帮助 – LINQ CRUD操作

你不打开数据库。

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

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

那么你将通常运作。