Ste*_*ash 11 entity-framework ef-code-first ef-migrations
我正在尝试使用Code First和Migrations.即使我的模型目前没有变化,我也会遇到异常.当我添加一个迁移时,up和down都是空的,但是我收到一条运行时错误消息,如下所示:
EntityFramework.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理
附加信息:自创建数据库以来,支持"MyDataContext"上下文的模型已更改.考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/?
我的架构如下:
另外,我有以下代码:
DbInitializer
public static MyDataContext Create()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataAccess.MyDataContext, MyDataAccess.Migrations.Configuration>());
return new MyDataContext(ConfigurationManager.ConnectionStrings["MyDataContext"].ConnectionString, null);
}
Run Code Online (Sandbox Code Playgroud)
我开始使用AutomaticMigrationsEnabled = false; 在迁移配置构造函数中,因为我理解这将允许(并要求)我对应用迁移的时间有更多的控制权.我也尝试将其设置为true但结果相同.
我在收到此错误时添加了一个新的迁移,并且Up方法为空.我将数据库更新为这个新的迁移,并在_migrationHistory表中创建了一条记录,但是当我尝试运行该应用程序时仍然收到错误.此外,种子数据未添加到数据库中.
protected override void Seed(MyDataAccess.MyDataContext context)
{
IdentityResult ir;
var appDbContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(appDbContext));
ir = roleManager.Create(new IdentityRole("Admin"));
ir = roleManager.Create(new IdentityRole("Active"));
ir = roleManager.Create(new IdentityRole("InActive"));
var userNamager = new UserManager<User>(new UserStore<User>(appDbContext));
// assign default admin
var admin = new User { UserName = "administrator", Email = "myAdmin@gmail.com" };
ir = userNamager.Create(admin, "myp@55word");
ir = userNamager.AddToRole(admin.Id, "Admin");
}
Run Code Online (Sandbox Code Playgroud)
哪里
public class ApplicationDbContext : IdentityDbContext<User>
{
public ApplicationDbContext()
: base("MyDataContext", throwIfV1Schema: false)
{
}
...
Run Code Online (Sandbox Code Playgroud)
问题:如果Add-Migration没有看到模型中的任何变化,为什么我在运行时会收到此错误?为什么种子代码没有被击中?我该如何解决这个问题,或者如果无法确定,我该如何进一步确定根本原因?
Osc*_*car 19
我不确定你是否找到了你的问题的答案,但我在这里找到的另一个答案实际上是为我做的: 实体框架模型更改错误
我实际上最终删除了__MigrationHistorySQL Server中的表,我不知道它是自动创建的.
文章还讨论了不生成它的选项我想通过使用这个指令:Database.SetInitializer<MyDbContext>(null);但我没有使用它,所以我不确定它是否像那样工作
| 归档时间: |
|
| 查看次数: |
23272 次 |
| 最近记录: |