.NET 8 Blazor Web App切换身份验证至SQLite遇CS0103错误求助
解决.NET 8 Blazor Web App切换Identity到SQLite后的CS0103错误
问题根源
自动生成的ApplicationDbContextModelSnapshot.cs文件中残留了SQL Server专属的配置代码(比如SqlServerModelBuilderExtensions相关调用),而你已经卸载了SQL Server的EF Core包,导致这些代码找不到对应方法,触发CS0103错误。
解决步骤
1. 修正ModelSnapshot中的SQL Server专属代码
打开ApplicationDbContextModelSnapshot.cs,找到所有包含SqlServerModelBuilderExtensions的代码行,替换为SQLite兼容的配置:
- 原SQL Server代码示例:
b.Property(u => u.Id).UseIdentityColumns(); - 替换为SQLite的自增列配置(使用SQLite EF Core扩展的单复数方法):
b.Property(u => u.Id).UseIdentityColumn(); - 或者使用EF Core通用自增配置(无需依赖数据库专属扩展):
b.Property(u => u.Id).ValueGeneratedOnAdd();
同时,将SQL Server专属的列类型(如nvarchar(450))替换为SQLite支持的类型,比如TEXT或INTEGER。
2. 重新生成适配SQLite的迁移
打开终端或Package Manager Console,执行以下命令:
# 添加新的迁移(可自定义命名,比如SQLiteInit) dotnet ef migrations add SQLiteInit # 更新数据库,使配置生效 dotnet ef database update
这会自动生成适配SQLite的新ModelSnapshot文件,覆盖旧的SQL Server相关配置。
3. 验证DbContext和Identity配置
确认Program.cs中的DbContext配置已完全切换到SQLite:
builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));
确保没有残留UseSqlServer()的调用,且Identity的配置未引用SQL Server专属选项。
4. 清理并重建项目
在开发工具中执行清理解决方案,再执行重建解决方案,清除编译缓存,确保所有依赖和代码变更生效。
内容的提问来源于stack exchange,提问作者rs77can
相关产品推荐
相关产品推荐

