.NET7 Identity项目使用Firebird EF无法更新数据库的问题
我有一个用脚手架搭建的.NET 7 Identity应用,之前用SQLite成功生成了数据库脚手架,现在切换到Firebird数据库时遇到以下错误:
Method not found:
'System.Collections.Generic.IList`1<Microsoft.EntityFrameworkCore.Metadata.Conventions.IModelInitializedConvention>
Microsoft.EntityFrameworkCore.Metadata.Conventions.ConventionSet.get_ModelInitializedConventions()'.
我已尝试安装最新的EntityFrameworkCore相关包,配置如下:
<PackageReference Include="FirebirdSql.EntityFrameworkCore.Firebird" Version="9.1.1" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.3" /> <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.3">
问题似乎与连接字符串无关,但仍附上供参考:
"ConnectionStrings": { "MyContextConnection": "datasource=localhost;database=C:/MyPath/MyDB.FDB;user id=******;password=*******;port number=3050;dialect=3;pooling=True;server type=0;character set=UTF8;connection lifetime=15;min pool size=0;max pool size=50;packet size=8192;wire crypt=Enabled", "MyDBProvider": "Firebird" }
请问我还遗漏了哪些配置或步骤?
这个错误的核心原因是EF Core版本与Firebird EF Core Provider版本不兼容,导致API调用不匹配。
调整Firebird Provider版本:FirebirdSql.EntityFrameworkCore.Firebird 9.1.1适配的是.NET 8版本的EF Core,而你使用的是.NET 7的EF Core(7.0.3),版本完全不匹配。你需要将Firebird Provider降级到适配.NET 7的版本,推荐安装8.0.2版本(这是适配.NET 7的最新稳定版)。
清理冗余依赖:移除项目中不需要的
Microsoft.EntityFrameworkCore.Sqlite和Microsoft.EntityFrameworkCore.SqlServer包,避免不同数据库Provider之间的版本冲突干扰。确认上下文配置正确性:确保你的DbContext在
Program.cs(或Startup.cs)的服务配置中正确指定Firebird作为数据库提供程序,示例代码如下:
services.AddDbContext<ApplicationDbContext>(options => options.UseFirebird(Configuration.GetConnectionString("MyContextConnection")));
- 重置项目环境:卸载当前的Firebird Provider包,安装适配版本后,手动删除项目的
bin和obj目录,再重新运行数据库脚手架命令,确保所有依赖都正确加载。
内容的提问来源于stack exchange,提问作者neggenbe

