.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 项目中使用它:
我遇到了同样的问题:SqliteException:SQLite 错误 1:'no such table: ScanFolders'。我使用 SQLlite 浏览器检查调试文件夹中的数据库,它没有表。检查数据库上的属性是否设置为“不复制”我将其更改为“如果更新则复制”并为我解决了这个问题。
我 运行 遇到一个问题,代码无法找到我现有的 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 项目中使用它:
我遇到了同样的问题:SqliteException:SQLite 错误 1:'no such table: ScanFolders'。我使用 SQLlite 浏览器检查调试文件夹中的数据库,它没有表。检查数据库上的属性是否设置为“不复制”我将其更改为“如果更新则复制”并为我解决了这个问题。