我正在尝试遵循this教程
最初dotnet ef迁移add initialmigration不起作用.(找不到命令)
我将VS2022更新为17.4.4,并运行dotnet tool install--global dotnet-ef,然后能够创建初始迁移。
我现在在运行dotnet ef数据库更新时遇到错误
我得到的错误是
- PS D:\Soft\Source\ToDoApi\todoapi〉dotnet ef数据库更新构建开始...构建成功。信息:[20101]已执行数据库命令(9毫秒)[参数=[],命令类型="文本",命令超时="30"]从"sqlite_master"中选择计数(),其中"名称"="__EFMigrationsHistory" AND "类型"="表";信息:Microsoft. EntityFrameworkCore. Database. Command [20101]已执行数据库命令(1毫秒)[参数=[],命令类型="文本",命令超时="30"]创建表"__EFMigrationsHistory"("迁移ID"文本不为空约束"PK___EFMigrationsHistory"主键,"产品版本"文本不为空);信息:Microsoft. EntityFrameworkCore.数据库.命令[20101]已执行数据库命令(0毫秒)[参数=[],命令类型="文本",命令超时="30"]从"sqlite_master"中选择计数()WHERE "名称"="__EFMigrationsHistory" AND "类型"="table";信息:Microsoft. EntityFrameworkCore.迁移[20402]正在应用迁移"20230117171527_初始化迁移"。正在应用迁移"20230117171527_初始化迁移"。信息:[20101]已执行数据库命令(0毫秒)[参数=[],命令类型="文本",命令超时="30"]创建表"待办事项"("ID"整数不为空约束"PK_ToDos"主键自动增量,"待办事项名称"文本为空);失败:Microsoft. EntityFrameworkCore. Database. Command [20102]无法执行数据库命令(2毫秒)[参数=[],命令类型="文本",命令超时="30"]插入到"__EFMigrationsHistory"("迁移ID","产品版本")值("20230117171527初始迁移","7.0.2");* * 无法执行数据库命令(2毫秒)[参数=[],命令类型="文本",命令超时="30"]插入到"__EFMigrationsHistory"("迁移ID","产品版本")值("20230117171527_初始迁移","7.0.2");异常(0x80004005):SQLite错误1:'无此表:__EF迁移历史记录"。***
我在解决方案资源管理器中没有看到sqlite数据库文件或对它的引用,尽管它似乎已经从sqlite_master表中执行了选择计数()而没有失败。
似乎未创建数据库
我查看了This SO question,由于找不到数据库的路径,它也出现了同样的错误-不确定这是否也是我的问题-但如何解决它?
我已尝试删除迁移: * dotnet ef迁移删除了并再次添加,但在运行dotnet ef数据库更新时仍然出现相同的错误
我尝试更新dotnet工具dotnet ef update--global dotnet-ef**(已使用最新的稳定版本(版本"7.0.2")重新安装了工具"dotnet-ef"。)
我安装了这些nuget软件包:
a)微软实体框架核心设计7.0.2
b)微软实体框架核心Sqlite 7.0.2
有什么想法吗?
- 编辑**
@art以下是应用设置. json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
},
"ConnectionStrings": {
"SqliteConnection": "Data Source=Todo.db"
}
}
}
和程序. cs
using Microsoft.EntityFrameworkCore;
using ToDoAPI.Data;
using ToDoAPI.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<AppDbContext>(opt =>
opt.UseSqlite(builder.Configuration.GetConnectionString("SqliteConnection")));
var app = builder.Build();
app.Run();
和应用程序数据库上下文
using Microsoft.EntityFrameworkCore;
using ToDoAPI.Models;
namespace ToDoAPI.Data
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<ToDo> ToDos => Set<ToDo>();
}
}
1条答案
按热度按时间pgky5nke1#
在appsettings.json层次结构中,“连接字符串”位于“日志记录”下
这就是为什么程序找不到DB的路径
“连接字符串”应位于“日志记录”旁边