ASP.NET Core Web API连接SQL Server CE数据库报错求助
ASP.NET Core Web API连接SQL Server Compact Edition异常问题
问题场景
在ASP.NET控制台应用中可正常连接SQL Server Compact Edition数据库,但将相同的连接代码迁移到ASP.NET Core Web API项目后,创建SqlCeConnection实例时抛出异常:
'System.Data.SqlServerCe.SqlCeConnection'的类型初始值设定项引发了异常
相关代码
仓储类代码
public class ClienDetailRepository: IClientDetailRepository { private readonly string _connectionString; private static string DbFilePath = @"C:\Git\Forecaster\DB\THSTaxPro.sdf"; private static string DbPassword = "*****"; private static string DbMaxSize = "4090"; public static string ConnectionString = @"Data Source=" + DbFilePath + ";Password=" + DbPassword + ";Max Database Size=" + DbMaxSize + ""; public ClienDetailRepository(string connectionString) { _connectionString = connectionString; //_connectionString = ConnectionString; } }
异常触发代码行
SqlCeConnection sqlconTHS = new SqlCeConnection(ConnectionString);
排查与解决方案
1. 解决.NET Core兼容性问题
System.Data.SqlServerCe是针对.NET Framework设计的组件,ASP.NET Core基于.NET Core/.NET 5+运行时,二者存在兼容性冲突。需改用适配.NET Core的SQL Server Compact驱动:
- 安装对应版本的NuGet包:
Microsoft.EntityFrameworkCore.SqlServerCompact35(对应SQL CE 3.5)或Microsoft.EntityFrameworkCore.SqlServerCompact40(对应SQL CE 4.0)
2. 匹配运行时架构
SQL Server Compact分32位和64位版本,需确保Web API项目的目标平台(x86/x64/Any CPU)与驱动架构一致:
- 若使用旧版SQL CE,建议将项目目标平台明确设置为x86,避免自动选择不匹配的架构导致驱动加载失败
3. 配置文件权限
ASP.NET Core Web API的运行进程(本地开发为当前用户,部署后为IIS应用池身份)需要拥有数据库文件所在目录的读写权限,否则会触发初始化异常
4. 优化连接字符串配置
避免硬编码连接字符串,改用appsettings.json统一配置:
"ConnectionStrings": { "THSTaxPro": "Data Source=C:\\Git\\Forecaster\\DB\\THSTaxPro.sdf;Password=*****;Max Database Size=4090" }
通过依赖注入获取连接字符串,替代静态字段:
public class ClienDetailRepository: IClientDetailRepository { private readonly string _connectionString; public ClienDetailRepository(IConfiguration configuration) { _connectionString = configuration.GetConnectionString("THSTaxPro"); } }
5. 检查依赖完整性
确保Web API项目输出目录中包含SQL Server Compact的运行时组件(如sqlceca40.dll、sqlceme40.dll等),通过NuGet安装驱动会自动引入这些文件,手动复制需确认文件齐全
内容的提问来源于stack exchange,提问作者aayushi
相关产品推荐
相关产品推荐

