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

WPF C#中update-database默认使用LocalDb而非指定SQL Server问题

问题原因与解决方案

核心原因

Entity Framework的update-database迁移命令默认读取启动项目的配置文件。你的启动项目是App.UI(WPF应用),而它的配置文件中没有指定目标连接字符串,EF就会 fallback 到LocalDB的默认连接(LocalDb\mssqllocaldb),这就是为什么数据库建在了LocalDB里。

类库项目(App.Data)的App.config不会被迁移命令自动读取——因为迁移命令的上下文是启动项目,而非类库。

解决方案

方案1:在启动项目(App.UI)中添加连接字符串

这是最稳妥的长期方案,因为运行时应用也需要读取启动项目的配置:
在App.UI的App.config中添加和App.Data一致的连接字符串(注意统一名称大小写):

<connectionStrings>
  <add name="AppDb"
       connectionString="Server=MyServer;Database=AppDb;Trusted_Connection=True;"
       providerName="System.Data.SqlClient" />
</connectionStrings>

添加后重新执行update-database,命令就会读取启动项目的配置,连接到你指定的AppDb数据库。

方案2:执行迁移时指定项目和连接字符串

如果不想修改启动项目的配置,可以在执行update-database时通过参数强制指定读取类库的配置:

Update-Database -ConnectionStringName "AppDb" -Project "App.Data"

这个命令会直接读取App.Data项目的App.config中的连接字符串,但每次迁移都需要添加这些参数,适合临时场景。

额外说明

  • 类库的App.config仅在单独测试类库时有用,当类库被启动项目引用后,运行时和迁移命令都以启动项目的配置为准。
  • 不需要在两个项目中都配置连接字符串,但启动项目必须有(方案1),或者每次迁移都指定参数(方案2)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:00:03