【发布时间】:2014-04-19 22:58:29
【问题描述】:
首先,我在其他任何地方都没有看到过这个错误,我猜它不是重复的,所以请先阅读整个情况。
一切正常,然后我尝试更新我的一个模型类(App 类,更新现在留下评论)我将在下面列出;并且繁荣我有这个丑陋的错误。
支持“ApplicationDbContext”上下文的模型在创建数据库后发生了变化。考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。在 System.Data.Entity.CreateDatabaseIfNotExists
1.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf1.b__e() 在 System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) 在 System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() 在 System.Data .Entity.Internal.LazyInternalContext.b__4(InternalContext c) at System.Data.Entity.Internal.RetryAction1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action1 action) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() at System.Data.Entity.Internal .InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.InternalSet1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet1.Include(String path) at System.Data.Entity.Infrastructure.DbQuery1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable1 source, String path) at System.Data.Entity.QueryableExtensions.Include[T,TProperty](IQueryable1 source, Expression1 路径) 在 Microsoft.AspNet.Identity.EntityFramework.UserStore6.GetUserAggregateAsync(Expression1 过滤器) 在 Microsoft.AspNet.Identity.EntityFramework.UserStore@987654329 @2.FindByNameAsync(String userName) 在 Microsoft.AspNet.Identity.User Manager`2.d__12.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification 的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) (任务任务)在 ControlPanel.Web.Controllers.AccountController.d__2.MoveNext() 在 d:\Projects\FULL\Control Panel\ControlPanel.Web\Controllers\AccountController.cs:line 56
起初我认为这可能是迁移问题,所以我完全删除了数据库,重新启用了迁移,并添加了一个 Init 迁移并使用
更新了数据库update-database -force -verbose
一切顺利,没有任何抱怨,但是,每当我尝试登录我的网站时,我都会收到上一个错误。我做了大约十次迁移的事情,但无法解决问题。
这是我的领域类(模型):
public class App
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int AppId { get; set; }
//[Required]
public virtual string FacebookId { get; set; }
//[Required]
public virtual string Secret { get; set; }
public virtual List<User> Users { get; set; }
public virtual List<Post> Posts { get; set; }
//public virtual ApplicationUser Admin { get; set; }
}
public class Post
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int PostId { get; set; }
public virtual string Content { get; set; }
public virtual string Link { get; set; }
public virtual string Image { get; set; }
public virtual bool IsSpecial { get; set; }
//[Required]
public virtual App App { get; set; }
//[Required]
public virtual DateTime? PublishDate { get; set; }
}
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int UserId { get; set; }
[MaxLength(500)]
public virtual string FacebookId { get; set; }
[MaxLength(500)]
public virtual string Token { get; set; }
//[Required]
public virtual App App { get; set; }
}
这是我的身份模型:
public class ApplicationUser : IdentityUser
{
public virtual List<App> Apps { get; set; }
public bool? IsPremium { get; set; }
[DataType(DataType.Date)]
public DateTime? LastPublishDateTime { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("dCon")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("Admins");
modelBuilder.Entity<ApplicationUser>().ToTable("Admins");
modelBuilder.Entity<IdentityUserRole>().ToTable("AdminRoles");
modelBuilder.Entity<IdentityUserLogin>().ToTable("Logins");
modelBuilder.Entity<IdentityUserClaim>().ToTable("Claims");
modelBuilder.Entity<IdentityRole>().ToTable("Roles");
}
}
【问题讨论】:
-
你确定你没有在其他地方看到过这个问题吗?这个链接呢? stackoverflow.com/questions/3600175/…
-
不,它们不一样我可以向你保证,我已经尝试了那里提供的解决方案,但根本没有结果,他们的错误是:要么手动删除/更新数据库,而我的说:考虑使用代码优先迁移来更新数据库
标签: .net asp.net-mvc linq entity-framework asp.net-mvc-5