zoukankan      html  css  js  c++  java
  • 2019-8-31-dotnet-控制台读写-Sqlite-提示-no-such-table-找不到文件

    title author date CreateTime categories
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    lindexi
    2019-08-31 16:55:58 +0800
    2019-04-18 08:35:19 +0800
    dotnet

    在使用 dotnet 读写 Sqlite 可以通过 EF Core 的方法,但是在 EF Core 创建的数据库可能和读写的数据库不是相同的文件

    在我运行代码的时候发现在通过迁移创建数据库,创建的文件是在项目的代码文件夹里面,但是在运行代码的时候是从程序的文件夹开始寻找,于是就找不到数据库文件

    因为找不到数据库文件就会提示 Microsoft.Data.Sqlite.SqliteException:“SQLite Error 1: 'no such table:Foo'" 看起来和没有写迁移一样

    在 dotnet 使用迁移就可以创建数据库,或者在修改数据

    dotnet ef migrations add Lindexi
    dotnet ef database update

    于是通过修改文件的相对路径找到项目的数据库,因为程序一般都在 bindebug etcoreapp3.0 所以通过 ......数据库.db 就可以找到数据库

    如果是在 ASP.NET Core 可以使用下面代码

    public class Startup
    {
        private IApplicationEnvironment _appEnv;
    
        public Startup(IApplicationEnvironment appEnv)
        {
            _appEnv = appEnv;
        }
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddEntityFramework()
                .AddSqlite()
                .AddDbContext<MyContext>(
                    options => { options.UseSqlite($"Data Source={_appEnv.ApplicationBasePath}/data.db"); });
        }
    }

    迁移 - EF Core

  • 相关阅读:
    装饰器函数(一)
    面向对象的初阶复习
    内置函数/反射/内置方法(单例类面)
    property特殊属性/类方法/静态方法
    多态/封装
    接口类抽象类
    初始继承之顺序/深度优先及广度优先
    类涉及的空间关系及组合(可变项地址面)
    <head></head>
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085741.html
Copyright © 2011-2022 走看看