我正在尝试将SQLiteCodeFirst与Entity Framework 6.2和VS2017 15.9.4一起使用来创建简单的数据库。
但是数据库不会创建。
这里是DbContext
let ele = document.querySelectorAll('.check');
ele.forEach(e=>{
e.addEventListener('click', function(e){
console.log(e.target.value);
})
})
这是数据实体类
<input class="check check-list" value="1" type="checkbox" name="check-obj">1
<input class="check check-list" value="2" type="checkbox" name="check-obj">2
<input class="check check-list" value="3" type="checkbox" name="check-obj">3
<input class="check check-list" value="4" type="checkbox" name="check-obj">4
这是异常发生在
中的代码public class HelloDbContext : DbContext
{
public HelloDbContext()
: base("name=ConnectionString")
{
}
public DbSet<Setting> Settings { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<HelloDbContext>(modelBuilder);
Database.SetInitializer(sqliteConnectionInitializer);
}
}
这是app.config
public class Setting
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
这是个例外
using (var ctx = new HelloDbContext())
{
try
{
var obj = new Setting { Name = "blue" };
ctx.Settings.Add(obj);
ctx.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex);
throw;
}
}
以下是参考文献
答案 0 :(得分:1)
这看起来像是权限问题
System.Data.SQLite.SQLiteException: unable to open database file
在app.config connectionString中将数据库文件设置为 c:\ mydb.sqlite
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=c:\mydb.sqlite" providerName="System.Data.SQLite"/>
</connectionStrings>
Windows有时在系统磁盘根目录中有一些文件很奇怪(尝试使用rightclick-menu-thingy在系统磁盘根目录 c:\ 中创建文本文件)。 br /> 您可以将app.config中的connectionString的文件路径更改为新创建的文件夹,例如 c:\ testing-stuffs \ mydb.sqlite (我很怀疑在 c处未创建任何内容: \ mydb.sqlite ,因此不应移动任何文件。