asp.net-mvc – EF6“没有迁移已应用于目标数据库.”
在mvc5应用程序中,我创建了一个CodeFirst数据模型,并对其进行了多次迁移.
然后我重构了我的项目,并将所有数据/迁移类移动到一个新项目,该项目由我的表示层引用. 在项目更改后,dbcontext成功连接并对DB执行读/写操作. 当我对模型进行微小更改并运行add-migration时,EF使用代码创建了一个迁移,从头开始创建数据库,就像它没有“看到”现有表一样. 当然,当我跑 Get-Migrations -ConfigurationTypeName ConfigurationDbContext 我有 No migrations have been applied to the target database. 数据库中的__MigrationHistory完好无损,迁移/配置类命名空间未更改.此外,显然,ConnectionString是正常的,否则他将无法使用数据库,我会得到“自创建数据库以来支持上下文的模型”或类似的错误. 编辑: 正如评论中所建议的,我在DbContext构造函数中指定了确切的连接字符串,而不是web.config中的connectionstirng名称,就像在原始mvc项目中一样. 运行Get-Migrations和update-databse时,db中仍然没有历史记录/更改. 当我运行Get-Migrations -ConfigurationTypeName My_Namespace.Migrations.ConfigurationDbContext.ConfigurationDbContext 我明白了 No migrations have been applied to the target database. 如果我尝试指定连接字符串 Get-Migrations -ConfigurationTypeName My_Namespace.Migrations.ConfigurationDbContext.ConfigurationDbContext -ConnectionString "Server=my_server;Initial Catalog=my_catalog;User Id=my_user;Password=my_pass" -ConnectionProviderName="System.Data.SqlClient" -verbose -debug PM卡在>>上签名,直到我重新启动或清除窗口… 如果我省略了ConnectionProviderName =“System.Data.SqlClient”,控制台会要求我输入它,在我输入后,它会显示与正确数据库的连接, Target database is: 'my_catalog (DataSource: my_server Provider: System.Data.SqlClient,Origin: Explicit) 但仍然没有移民…… No migrations have been applied to the target database. 为什么可以进一步调查/解决此问题? 编辑2: 我的dbcontext的构造函数很简单: public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base( "Server=my_server_name;Initial Catalog=my_db_name;UserId=my_username;Password=my_password" ) {} public DbSet<Model1> Model1Entities { get; set; } public DbSet<Model2> Model2Entities { get; set; } public DbSet<Model3> Model3Entities { get; set; } } 它基于IdentityDbContext,如模板mvc5应用程序,因为我不想为它创建不同的dbcontext. 并且ConfigurationDbContext是自动的 internal sealed class ConfigurationDbContext : DbMigrationsConfiguration<ApplicationDbContext> { public ConfigurationDbContext() { AutomaticMigrationsEnabled = false; } protected override void Seed(ApplicationDbContext context) { } } 谢谢! 解决方法
好吧,答案是,在重构期间,ConfigurationDbContext的命名空间从某种程度上改变了
demo10.Migrations.ConfigurationDbContext 至 demo10.Migrations.ConfigurationDbContext.ConfigurationDbContext __MigrationHistory表的ContextKey列应该是ConfigurationDbContext命名空间(你可以省略DbContext,就像有 demo10.Migrations.Configuration 在表中 demo10.Migrations.ConfigurationDbContext 命名空间). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 多个字段的远程验证
- asp.net-mvc – MVC 4 SimpleMembership – 登录
- asp.net – System.Security.SecurityException?
- 内容管理 – ASP.NET建议[已结束]
- asp.net-mvc – 版本弃用Facebook Graph API v2.
- asp.net-mvc – 在Razor中输出单引号生成的JavaS
- ASP.NET Core WebAPI 实现CRUD
- 通过ASP.NET Web应用程序上载500MB文件
- 在Asp.Net中使用Office365 SMTP时出错
- asp.net – 在GridViewTemplate字段TextBox中对齐