Mas*_*oud 11 c# entity-framework ef-migrations
我正在使用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
Run Code Online (Sandbox Code Playgroud)
当我指定我的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"
Run Code Online (Sandbox Code Playgroud)
但是当我使用时Add-Migration没有额外的信息:
add-migration updateXtable
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
由于以下显式迁移未决,因此无法生成显式迁移:[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
Run Code Online (Sandbox Code Playgroud)
这是我的项目(包含我的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>
Run Code Online (Sandbox Code Playgroud)
有谁知道问题出在哪里?
ANe*_*ves 22
要解决此问题,我将默认项目更改为app.config包含正确连接字符串的项目.
这应该是很明显的,因为该系统检测没有在迁移的适用-一个明显的迹象,表明它没有找到DB,一个显而易见的原因是什么是它无法找到连接字符串(如OP的结论).
"后见之明是20/20".
终于我发现问题了!正如Mohamad Bataineh在这个帖子中所说(参见答案)
在 DbContext 类中,您需要为 sql 源指定具有正确名称的基类构造函数。例如名称=MyDBEntities
换句话说,我更改了现有的 dbcontext 的构造函数
public MyDbContext()
{
}
Run Code Online (Sandbox Code Playgroud)
到
public MyDbContext(): base("name=ERPContext")
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28783 次 |
| 最近记录: |