You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:07:23