我尝试做的是在空数据库上打开连接时动态创建table
。我已经使用Linq
到Sqlite
创建了模型,并成功将其用于非空数据库。
现在我正在尝试使用" new"数据库。
我的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/
答案 0 :(得分:9)
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>();
}
不幸的是,缺少文档。但您可以使用测试sample。
答案 1 :(得分:2)
我希望它有所帮助 - LINQ CRUD Operations
答案 2 :(得分:0)
您没有打开数据库。
MyDB db = MyDB(“MyConnectionName”)&lt; - 创建数据库。
db.open(); &lt; - 添加此内容。
然后你将正常运作。