.Net EntityFramework Core - SQLite 错误 1:没有这样的 table

.Net EntityFramework Core - SQLite Error 1: no such table

我 运行 遇到一个问题,代码无法找到我现有的 Sqlite 数据库,该数据库与调用它的代码位于同一文件夹中。我得到的错误是,"SQLite Error 1 table does not exist." 我知道 table 存在,只是无法找到路径。我究竟做错了什么?

注意:我不是在创建代码优先的 Sqlite 数据库。这是打开现有的 Sqlite 数据库

数据库上下文代码

using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyWidget.Domain.Data
{
    public static class MyWidgetService
    {
        public static void GetAll()
        {            

            using var context = new MyWidgetContext();
            if (context.Translations.Any())
            {
                var data = context.Widgets.ToList(); 
                foreach (var widget in data)
                {
                    Console.WriteLine(widget.ProductName);
                }
            }
            else
            {
                Console.WriteLine("No widgets found");
            }
        }
    }
}

**数据库服务代码

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
using Microsoft.EntityFrameworkCore;

namespace MyWidget.Domain.Data
{
    public class MyWidgetContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite(connectionString: "Filename=./MyWidgetDB.db");
        }

        public DbSet<WidgetData> Widgets { get; set; }
    }

    public class WidgetData
    {
        public int Id { get; set; }
        public string ProductName { get; set; }

    }
}

我决定换个方向,使用 Dapper 和 System.Data.Sqlite.Core。 Tim Corey 的这段视频完美地解释了如何实现它:

https://www.youtube.com/watch?v=ayp3tHEkRc0

这种方法非常有效,我正在我的 GitHub 项目中使用它:

https://github.com/encouragingapps/Blender3DReference

我遇到了同样的问题:SqliteException:SQLite 错误 1:'no such table: ScanFolders'。我使用 SQLlite 浏览器检查调试文件夹中的数据库,它没有表。检查数据库上的属性是否设置为“不复制”我将其更改为“如果更新则复制”并为我解决了这个问题。