我正在使用EF 6.1
,我通过
Enable-Migrations
Add-Migration InitializeDb -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
Update-Database -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" -verbose -script
当我在包管理器控制台中明确指定ConnectionString
,ConnectionProviderName
Add-Migration
和Update-database
时
它工作正常:
Add-migration updateXtable -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
但是当我使用Add-Migration
时没有额外的信息:
add-migration updateXtable
我收到以下错误:
由于以下显式迁移未决,因此无法生成显式迁移:[201408300955376_InitializeDb,201408311028404_Test]。在尝试生成新的显式迁移之前应用挂起的显式迁移。
所以,每次我需要更新我的数据库时,我都必须使用以下命令:
Add-Migration UpdateXTable -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
Update-Database -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" -verbose -script
这是我的项目(包含我的DbContext
)app.config
文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="ERPContext" connectionString="Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
有谁知道问题出在哪里?
答案 0 :(得分:22)
要解决此问题,我将默认项目更改为app.config
包含正确连接字符串的项目。
这应该是显而易见的,因为系统正在检测已应用的迁移的 none - 这是一个明显的迹象表明它没有找到数据库,这显然是因为它无法找到连接字符串(如OP总结)。
&#34;后见之明是20/20&#34;。
答案 1 :(得分:3)
我也遇到了这个错误。除了正确设置默认项目(如ANeves所述)之外,我还必须使用连接字符串将项目设置为解决方案资源管理器中的StartUp项目。只有在我正确设置了这两个错误后,错误才会消失。
答案 2 :(得分:3)
最后我发现了问题! 正如Mohamad Bataineh中this thread所述(见答案)
在DbContext类中,您需要使用sql源的正确名称指定基类构造函数。例如name = MyDBEntities
换句话说,我改变了现有的dbcontext构造函数
public MyDbContext()
{
}
要
public MyDbContext(): base("name=ERPContext")
{
}
答案 3 :(得分:1)
我能够通过删除迁移文件夹中的相应迁移(在解决方案资源管理器中)来删除该消息,然后添加新迁移并最终更新数据库。
答案 4 :(得分:1)
只需从迁移文件夹中删除该迁移,该文件夹显示错误且未更新数据库。然后再添加迁移。它会起作用。
答案 5 :(得分:0)
在我的情况下,工作站的IP地址未添加到SQL Server的防火墙例外中。
答案 6 :(得分:-1)
只需删除您有错误的迁移 它对我有用