代码优先更新数据库使用未指定的localdb连接字符串

问题描述 投票:0回答:1

Visual Studio 2019,C#

我正在研究我的第一个代码优先实现。

我建立了一个很好的数据访问层。然后,我去添加/测试数据迁移。

我创建了一个迁移文件,然后转到程序包管理器控制台并运行它:

更新数据库

长时间停顿后,我看到一条消息:

Target database is: 'OMDB' (DataSource: (localdb)\mssqllocaldb, Provider: System.Data.SqlClient, Origin: Convention).

OMDB是我的模型。但是,我没有将其指向我的app.config中的localDB,而是指向了sqlexpress:

….
<connectionStrings>
<add name="OMDB" connectionString="data source=.\SQLEXPRESS;initial catalog=MyDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value ="data source=.\SQLEXPRESS;initial catalog=MyDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"/>
  </parameters>
  </defaultConnectionFactory>
  <providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
   </providers>

…

为了构建数据访问层,我必须向类构造函数添加一个替代项以加载连接字符串:

    public OMDB(string szConnectionString) : base(szConnectionString)
    { }

但是我认为这与我的问题无关...

我将默认项目设置为数据访问层项目(DAL),我也尝试在更新数据库行上强制使用它:

update-database -Verbose -ProjectName DAL

我在解决方案中对localDB进行了全局搜索,但没有成功,所以我不知道使用localdb作为源的想法是什么??

关于在何处为该连接拉起localDB的任何建议?

c# entity-framework entity-framework-core code-first
1个回答
0
投票

好吧,这真的让我很费时间。...我至少是找出导致问题的原因,并且至少现在是一种解决方法。

我在解决方案中有一个项目,这是我的数据访问层。即使我在包管理器控制台中选择了该项目,它仍在顶层创建了一个空白应用程序配置。由于该app.config中没有连接字符串标记,因此它默认为localdb,最终出错。

因此,我将连接字符串从数据访问库项目app.config复制到主项目app.config,一切开始正常工作。不知道为什么它要转到主项目文件,但是它是...我稍后必须回到此内容,但它现在可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.