代码优先更新数据库使用未指定的localdb连接字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码优先更新数据库使用未指定的localdb连接字符串相关的知识,希望对你有一定的参考价值。
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的任何建议?
好吧,这真的让我很费时间。...我至少是找出导致问题的原因,并且至少现在是一种解决方法。
我在解决方案中有一个项目,这是我的数据访问层。即使我在包管理器控制台中选择了该项目,它仍在顶层创建了一个空白应用程序配置。由于该app.config中没有连接字符串标记,因此它默认为localdb,最终出错。
因此,我将连接字符串从数据访问库项目app.config复制到主项目app.config,一切开始正常工作。不知道为什么它要转到主项目文件,但是它是...我稍后必须回到此内容,但它现在可以正常工作。
以上是关于代码优先更新数据库使用未指定的localdb连接字符串的主要内容,如果未能解决你的问题,请参考以下文章
Update-Database - (localdb) MSSQLLocalDB出错
在 Visual Studio 2015 中无法识别 LocalDB