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

.NET 4.7 EF数据库优先新增API层后连接字符串找不到问题

问题分析与解决方案

核心原因

在.NET Framework中,类库项目(如你的Data层)的配置文件(App.config)不会被运行时读取,连接字符串等配置始终从启动项目的配置文件(Web.config,针对UI/API这类Web项目)加载。

你之前Application层能正常连接,是因为它被UI层(启动项目)调用,UI层的Web.config包含了CashinEntities连接字符串;而现在调用Data层仓储时,启动项目(可能是新增的API层,或是UI层配置未同步)的配置文件里缺少这个连接字符串,导致DbContext初始化失败。

解决步骤

  1. 确认启动项目
    右键解决方案→设置启动项目,明确当前运行的是UI层还是新增的API层。

  2. 同步连接字符串到启动项目配置文件
    将Data层App.Config中<connectionStrings>节点的完整内容,复制到启动项目Web.config的<configuration>节点下:

    <connectionStrings>
     <add name="CashinEntities" connectionString="metadata=res://*/CashinModel.csdl|res://*/CashinModel.ssdl|res://*/CashinModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=HAH;initial catalog=Cashin;persist security info=True;user id=sa;password=band;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    
```
  1. 验证配置名称一致性
    确保DbContext构造函数中指定的连接字符串名称CashinEntities,与配置文件中的name属性完全一致(大小写敏感)。你的CashinEntities构造代码是正确的:

    public CashinEntities()
        : base("name=CashinEntities")
    {
    }
    
  2. API层额外检查
    如果启动项目是新增的API层,确认Web.config中已包含Entity Framework的必要配置段(若UI层原有),例如:

    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="mssqllocaldb" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    

补充说明

仓储模式下,Data层作为类库本身不负责提供运行时配置,所有配置都由启动项目(入口程序)提供,这是.NET Framework类库的固有运行机制。


内容的提问来源于stack exchange,提问作者Liplight Crew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:50:03