Öncelikle, bu hatayı başka hiçbir yerde görmedim ve sanırım bu bir kopya değil, bu yüzden lütfen önce tüm durumu okuyun.
Her şey gayet iyi çalışıyordu, sonra aşağıda listeleyeceğim model sınıflarımdan birini güncellemeye çalıştım ( Uygulama sınıfı ve güncelleme artık yorumlandı); ve bum bu çirkin hatayı yaşadım.
Veritabanı oluşturulduğundan beri 'ApplicationDbContext' bağlamını destekleyen model değişti. Veritabanını güncellemek için Code First Migrations'ı kullanmayı düşünün ( http://go.microsoft.com/fwlink/?LinkId=238269 ). System.Data.Entity.CreateDatabaseIfNotExists
1.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf
1.b__e () at System.Data.Entity.Internal.InternalContext.PerformInitializationAction (Eylem eylemi) System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () at System.Data.Entity.1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseType ( ) at System.Data.Entity.Internal.RetryAction 1 eyleminde Internal.LazyInternalContext.b__4 (InternalContext c) entityType) at System.Data.Entity.Internal.Linq.InternalSet1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet
1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable
1. System.Data.Entity.Infrastructure.DbQuery 1 kaynağında, Dize yolu) System.Data.Entity.QueryableExtensions için (Dize yolu) ekleyin1 source, Expression
. Microsoft.AspNet.Identity'de [T, TProperty] (IQueryable 1 yolu) ekleyin . EntityFramework.UserStore6.GetUserAggregateAsync(Expression
1 filtresi) Microsoft.AspNet.Identity.EntityFramework.UserStore'da 2.6.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager
FindByNameAsync (String userName) Microsoft.AspNet.Identity.UserManager`2.d__12.MoveNext () --- Önceki konumdan yığın izlemenin sonu System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess'te (Task görevi) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) içinde ControlPanel.Web.Controllers.AccountController.deb. : \ Projects \ FULL \ Control Panel \ ControlPanel.Web \ Controllers \ AccountController.cs: satır 56
İlk başta bunun bir geçiş sorunu olabileceğini düşündüm, bu yüzden veritabanını tamamen bıraktım, geçişleri yeniden etkinleştirdim ve bir Init geçişi ekledim ve kullanarak veritabanını güncelledim
update-database -force -verbose
Her şey şikayet olmadan iyi gidiyor, ancak siteme giriş yapmaya çalıştığımda önceki hatayı alıyorum. Sorunu çözemeden göç olayını yaklaşık on kez yaptım.
Etki alanı sınıflarım (modeller):
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; }
}
İşte IdentityModellerim:
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");
}
}