Przede wszystkim nie widziałem tego błędu nigdzie indziej i myślę, że nie jest to powtórzenie, więc najpierw przeczytaj całą sytuację.
Wszystko działało dobrze, a potem próbowałem zaktualizować jedną z moich klas modelu ( klasa App i aktualizacja są teraz komentowane), które wymienię poniżej; i bum miałem ten brzydki błąd.
Model wspierający kontekst „ApplicationDbContext” zmienił się od czasu utworzenia bazy danych. Rozważ użycie migracji Code First do zaktualizowania bazy danych ( http://go.microsoft.com/fwlink/?LinkId=238269 ). w System.Data.Entity.CreateDatabaseIfNotExists
1.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf
1.b__e () w System.Data.Entity.Internal.InternalContext.PerformInitializationAction (akcja akcji) w System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () w System.Data.Entity. Internal.LazyInternalContext.b__4 (InternalContext c) w System.Data.Entity.Internal.RetryAction1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1) w System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () w System.Data.Entity.Internal.InternalContext.GetEntitySypeSypeType (TypeType entityType) w System.Data.Entity.Internal.Linq.InternalSet1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet
1.Include (ścieżka String) w1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable
źródle System.Data.Entity.Infrastructure.DbQuery 1, ścieżka String) w System.Data.Entity.QueryableExtensions.Include [T, TProperty] (1 source, Expression
ścieżka IQueryable 1) w Microsoft.AspNet.Identity. EntityFramework.UserStore6.GetUserAggregateAsync(Expression
1) w Microsoft.AspNet.Identity.EntityFramework.UserStore6.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager
2.FindByNameAsync (String userName) w Microsoft.AspNet.Identity.UserManager`2.d__12.MoveNext () --- Koniec śledzenia stosu z poprzedniej lokalizacji, w której zgłoszono wyjątek --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (zadanie zadania) w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (zadanie zadania) w ControlPanel.Web.Controllers.Account.Controller.dove : \ Projects \ FULL \ Control Panel \ ControlPanel.Web \ Controllers \ AccountController.cs: wiersz 56
Na początku pomyślałem, że może to być problem z migracjami, więc całkowicie porzuciłem bazę danych, ponownie włączyłem migracje, dodałem migrację Init i zaktualizowałem bazę danych za pomocą
update-database -force -verbose
Wszystko idzie dobrze bez reklamacji, jednak za każdym razem, gdy próbuję zalogować się do mojej witryny, pojawia się poprzedni błąd. Przeprowadziłem migrację około dziesięć razy, nie mogąc rozwiązać problemu.
Oto moje klasy domeny (modele):
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; }
}
Oto moje IdentityModels:
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");
}
}