Dot-Net

自創建數據庫以來,支持“ApplicationDbContext”上下文的模型已更改

  • March 14, 2014

首先,我在其他任何地方都沒有看到這個錯誤,我猜這不是複制,所以請先閱讀整個情況。

一切正常,然後我嘗試更新我的一個模型類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.&lt;&gt;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.RetryAction 1.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.DbQuery 1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable1 source, String path) at System.Data.Entity.QueryableExtensions.Include[T,TProperty](IQueryable 1 source, Expression1 path) at Microsoft.AspNet.Identity。 EntityFramework.UserStore 6.GetUserAggregateAsync(Expression1 filter) at Microsoft.AspNet.Identity.EntityFramework.UserStore 6.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&lt;User&gt; Users { get; set; }
   public virtual List&lt;Post&gt; 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&lt;App&gt; Apps { get; set; }
   public bool? IsPremium { get; set; }
   [DataType(DataType.Date)]
   public DateTime? LastPublishDateTime { get; set; }
}

public class ApplicationDbContext : IdentityDbContext&lt;ApplicationUser&gt;
{
   public ApplicationDbContext()
       : base("dCon")
   {
   }
   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
       base.OnModelCreating(modelBuilder);
       modelBuilder.Entity&lt;IdentityUser&gt;().ToTable("Admins");
       modelBuilder.Entity&lt;ApplicationUser&gt;().ToTable("Admins");
       modelBuilder.Entity&lt;IdentityUserRole&gt;().ToTable("AdminRoles");
       modelBuilder.Entity&lt;IdentityUserLogin&gt;().ToTable("Logins");
       modelBuilder.Entity&lt;IdentityUserClaim&gt;().ToTable("Claims");
       modelBuilder.Entity&lt;IdentityRole&gt;().ToTable("Roles");
   }
}

這是一個奇怪的錯誤,最後不是我的錯誤,是微軟的,我安裝了“預發布”版本的實體框架,它是造成這個錯誤的原因,當我升級到穩定版時釋放它消失了,謝謝大家相信我,當我問這個問題時,我搜尋了一周左右的解決方案,所以我很確定這個問題不在其他任何地方:導致實體 framework.dll 的版本如果有幫助,問題是 6.0.2。

以防萬一其他人偶然發現像我這樣正在執行數據庫優先實現的人。

我通過擴展ApplicationUser類進行了更改,向表中添加了一個新欄位AspNetUsers,然後在啟動時出現此錯誤。

我可以通過刪除表中創建的記錄來解決這個問題__MigrationHistory(那裡只有一條記錄)我假設 EF 決定我需要使用遷移工具更新我的數據庫 - 但我自己已經手動完成了。

引用自:https://stackoverflow.com/questions/22408608