首先,我在其他任何地方都没有看到这个错误,我想这不是一个重复,所以请先阅读整个情况.

一切都很好,然后我try 了update one of my model classes(App class和更新现在留下 comments ),我将在下面列出;我犯了一个可怕的错误.


自创建数据库以来,支持"ApplicationDbContext"上下文的模型已更改.考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269).at System.Data.Entity.CreateDatabaseIfNotExists1.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf1.b__e()at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action动作)at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()at System.Data.Entity.Internal.LazyInternalContext.b__4(InternalContext c)at System.Data.Entity.Internal.RetryAction1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action1动作)at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type EntityType)at System.Data.Entity.Internal.Linq.InternalSet1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet1.Include(字符串路径)位于System.Data.Entity.Infrastructure ture.DbQuery1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable1源,字符串路径)位于System.Data.Entity.QueryableExtensions.Include[T,t属性](IQueryable1 source, Expression1路径)位于Microsoft.AspNet.Identity.EntityFramework.UserStore6.GetUserAggregateAsync(Expression1过滤)位于Microsoft.AspNet.Identity.EntityFramework.UserStore6.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager2.FindByNameAsync(String用户名)位于Microsoft.AspNet.Identity.UserManager`2.d__12.MoveNext()-来自抛出异常的前一位置的堆栈跟踪结束-位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务)位于d:\Projects\ControlPanel.Web.Controllers.AccountController.d__2.MoveNext()完全控制Panel\ControlPanel.Web\Controllers\AccountController.cs:line 56

At first我认为这可能是迁移问题,所以我完全删除了数据库,重新启用了迁移,并添加了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");
    }
}

推荐答案

这是一个非常奇怪的错误,最后不是我的错误,是微软的错误,我安装了实体框架的"预发布"版本,它对这个错误负责,当我升级到稳定版本时,它消失了,,谢谢大家相信我,当我问这个问题时,我花了一周左右的时间寻找它的解决方案,所以我很确定这个问题不在其他任何地方:实体框架的版本.如果有帮助的话,导致问题的dll是6.0.2.

.net相关问答推荐

删除数据库项目中的表

WinForm Task.Wait :为什么它会阻塞 UI?

.NET Async / Await:状态机如何知道何时继续执行?

Erlang 的让它崩溃的哲学 - 适用于其他地方吗?

.gitignore 和 Visual Studio 项目:忽略 bin/Debug 目录但不忽略 bin/Release 目录

OpenCV的.Net(dotNet)包装器?

C#:内存不足异常

如何将 NuGet 与 Visual C# Express 一起使用?

软件包版本始终为 1.0.0,带有 dotnet pack

.net 自定义配置如何不区分大小写解析枚举 ConfigurationProperty

.NET 中是否有可序列化的通用键/值对类?

如何保护我的 .NET 程序集免受反编译?

如何将 System.Type 转换为其可为空的版本?

如何仅在需要时提升权限?

确定使用 ContextMenuStrip 的控件

IEnumerable vs IReadonlyCollection vs ReadonlyCollection 用于公开列表成员

安装带有恢复操作的 Windows 服务以重新启动

将控制台输出镜像到文件

如何判断枚举是否包含数字?

如何重新启动我的 C# WinForm 应用程序?