System.Data.SQLite.SQLiteException:无法打开数据库文件(初始化数据库时发生异常)

时间:2018-12-31 03:58:04

标签: sqlite entity-framework-6

我正在尝试将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;
            }

        }

以下是参考文献

References

1 个答案:

答案 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 ,因此不应移动任何文件。