自創建數據庫以來,支持“ApplicationDbContext”上下文的模型已更改
首先,我在其他任何地方都沒有看到這個錯誤,我猜這不是複制,所以請先閱讀整個情況。
一切正常,然後我嘗試更新我的一個模型類(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) 在 System.Data.Entity.Internal.RetryAction1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action1 action) 在 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() 在 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 在 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 path) at Microsoft.AspNet.Identity。 EntityFramework.UserStore6.GetUserAggregateAsync(Expression1 filter) at Microsoft.AspNet.Identity.EntityFramework.UserStore6.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager2.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager`2.d__12.MoveNext() — 堆棧跟踪從上一個位置結束異常被拋出—在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 ControlPanel.Web.Controllers.AccountController.d__2.MoveNext() 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) :\Projects\FULL\Control Panel\ControlPanel.Web\Controllers\AccountController.cs:第 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"); } }
這是一個奇怪的錯誤,最後不是我的錯誤,是微軟的,我安裝了“預發布”版本的實體框架,它是造成這個錯誤的原因,當我升級到穩定版時釋放它消失了,謝謝大家相信我,當我問這個問題時,我搜尋了一周左右的解決方案,所以我很確定這個問題不在其他任何地方:導致實體 framework.dll 的版本如果有幫助,問題是 6.0.2。
以防萬一其他人偶然發現像我這樣正在執行數據庫優先實現的人。
我通過擴展
ApplicationUser類進行了更改,向表中添加了一個新欄位AspNetUsers,然後在啟動時出現此錯誤。我可以通過刪除表中創建的記錄來解決這個問題
__MigrationHistory(那裡只有一條記錄)我假設 EF 決定我需要使用遷移工具更新我的數據庫 - 但我自己已經手動完成了。