.NET EF Core无法查看表数据,版本差异问题求助
排查EF Core无法查看表数据的问题
核心问题定位
从代码和描述来看,问题集中在数据库连接配置不完整、迁移执行流程缺失,以及新版.NET与旧教程的配置差异上,以下是逐步排查方案:
1. 修复DbContext服务配置
你的Startup.cs中注释掉了带连接字符串的AddDbContext配置,当前的services.AddDbContext<AppDbContext>()无法正确读取数据库连接信息,导致EF Core无法定位目标数据库。
修改ConfigureServices中的DbContext配置:
// 替换原有的services.AddDbContext<AppDbContext>(); services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnectionString")));
同时确保appsettings.json中存在正确的连接字符串:
{ "ConnectionStrings": { "DefaultConnectionString": "Server=(localdb)\\mssqllocaldb;Database=eTickets3DB;Trusted_Connection=True;MultipleActiveResultSets=true" } }
2. 完整执行迁移流程
你添加了IDesignTimeDbContextFactory解决迁移初始化问题,但需要完成完整的迁移执行步骤:
- 打开Package Manager Console,执行生成迁移命令:
该命令会生成包含实体模型和种子数据定义的初始迁移文件。Add-Migration InitialCreate - 接着执行数据库更新命令,将迁移应用到数据库:
Update-Database
3. 检查种子数据生效情况
你在OnModelCreating中通过HasData添加了Actor的种子数据,需注意:
- 种子数据仅在迁移应用时写入数据库,修改
HasData后需要重新生成迁移并更新数据库。 - 检查
Actor实体的所有必填字段是否在种子数据中都提供了有效值,缺失必填项会导致种子数据写入失败。
4. 适配新版.NET的配置细节
如果你的项目是.NET 6+,旧教程的Startup.cs模式需注意以下细节:
- 若使用.NET 6+混合模式,确保
Program.cs正确引用Startup类:var builder = WebApplication.CreateBuilder(args); var startup = new Startup(builder.Configuration); startup.ConfigureServices(builder.Services); var app = builder.Build(); startup.Configure(app, app.Environment); app.Run(); - 移除
Configure方法中重复的app.UseAuthorization();,避免中间件顺序错误影响功能。
5. 验证数据库与表结构
- 打开SQL Server对象资源管理器,找到配置的目标数据库(如
eTickets3DB),检查是否存在Actors、Movies等预期表。 - 若表不存在,查看Package Manager Console的迁移日志,排查连接字符串错误、实体模型定义错误等迁移失败原因。
内容的提问来源于stack exchange,提问作者Zainab Afreen
相关产品推荐
相关产品推荐

