Prima di tutto, non ho visto questo errore da nessun'altra parte e immagino che non sia una replica, quindi per favore leggi prima l'intera situazione.
Tutto funzionava bene, quindi ho provato ad aggiornare una delle mie classi di modelli (la classe App e l'aggiornamento è ora lasciato commentato) che elencherò di seguito; e boom ho avuto questo brutto errore.
Il modello che supporta il contesto "ApplicationDbContext" è cambiato da quando è stato creato il database. Valuta la possibilità di utilizzare le migrazioni Code First per aggiornare il database ( http://go.microsoft.com/fwlink/?LinkId=238269 ). in System.Data.Entity.CreateDatabaseIfNotExists
1.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf
1.b__e () in System.Data.Entity.Internal.InternalContext.PerformInitializationAction (azione azione) in System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () in System.Data.Entity. Internal.LazyInternalContext.b__4 (InternalContext c) in System.Data.Entity.Internal.RetryAction1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1 azione) in System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () in System.Data.Entity.Internal.InternalContext.GetEntitySetAndBase entityType) in System.Data.Entity.Internal.Linq.InternalSet1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet
1.Include (String path) in System.Data.Entity.Infrastructure.DbQuery1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable
1 source, String path) in System.Data.Entity.QueryableExtensions.Include [T, TProperty] (IQueryable1 source, Expression
1 path) in Microsoft.AspNet.Identity. EntityFramework.UserStore6.GetUserAggregateAsync(Expression
1 filter) in Microsoft.AspNet.Identity.EntityFramework.UserStore6.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager
2.FindByNameAsync (String userName) in Microsoft.AspNet.Identity.UserManager`2.d__12.MoveNext () --- Fine traccia dello stack dalla posizione precedente in cui è stata generata un'eccezione --- in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) in ControlPanel.Web.Controllers.AccountController.d__2.Move : \ Projects \ FULL \ Control Panel \ ControlPanel.Web \ Controllers \ AccountController.cs: riga 56
All'inizio ho pensato che potesse essere un problema di migrazione, quindi ho abbandonato completamente il database, riattivato le migrazioni e aggiunto una migrazione Init e aggiornato il database utilizzando
update-database -force -verbose
Va tutto bene senza lamentele, tuttavia ogni volta che provo ad accedere al mio sito ricevo l'errore precedente. Ho eseguito la migrazione circa dieci volte senza essere in grado di risolvere il problema.
Ecco le mie classi di dominio (modelli):
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; }
}
Ecco i miei 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");
}
}