【问题标题】:SQLite Error 1: no such table in ASP.Net Core Console AppSQLite 错误 1:ASP.Net Core 控制台应用程序中没有这样的表
【发布时间】:2018-03-27 22:04:26
【问题描述】:

我已按照有关如何使用 MS 提供的文档进行连接的说明进行操作。但是,我没有成功从数据库中获取数据。

我收到的错误是这样的:

Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: ModelRecords'.

我这样设置 DBContext:

public class SsimDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string db_file = Environment.GetEnvironmentVariable("DocumentUpdaterDbLocation");
        Console.WriteLine(File.Exists(db_file) ? $"Database found at {db_file}" : $"Could not find database at {db_file}");
        optionsBuilder.UseSqlite($"Filename={db_file}");
    }

    public DbSet<ST_Record> ModelRecords { get; set; }
}

这里的区别是我从环境变量中获取到数据库的路径。当我将此变量写入控制台时,它会显示我期望的数据库路径:

Database found at C:\develop\temp\LFReview\sdb\MasterSdb.sdb

ST_Record 表定义为:

public class ST_Record
{
    [Key]
    public int ST_RecordID { get; set; }
    public int ProjectID { get; set; }
    public string Name { get; set; }
    public int ID { get; set; }
    public string Description { get; set; }
}

在数据库中运行此查询:

SELECT COUNT(*) FROM ST_Record;

返回:

COUNT(*)
1808

最后在这里抛出错误:

List<ST_Record> stt = _context.ModelRecords.Select(r => r).ToList();

谁能告诉我我在这里做错了什么?

谢谢

【问题讨论】:

标签: c# entity-framework console-application asp.net-core-2.0


【解决方案1】:

我今天遇到这个问题,db文件有时不会在你的bin文件夹中生成,所以你会得到这样的错误 Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: 您可以尝试通过将 db 文件从项目文件夹复制到 bin 文件夹来解决此问题。

【讨论】:

    【解决方案2】:

    在 .csproj 文件的 TargetFramework 属性下方添加这一行。

    <StartWorkingDirectory>$(MSBuildProjectDirectory)</StartWorkingDirectory>
    

    更多信息:https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=visual-studio

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 2016-02-01
      • 2015-05-11
      • 2010-12-29
      • 1970-01-01
      • 2016-11-02
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多