已经定义了具有架构"dbo"和表"AspNetRoles"的实体集"AspNetRoles"。每个实体集必须引用唯一的架构和表



迁移中的错误:

PM> 启用迁移 检查上下文是否面向现有的 数据库。。。 System.Data.Entity.ModelConfiguration.ModelValidationException: One or 在模型生成过程中检测到更多验证错误:

AspNetRoles:名称:具有架构"dbo"和架构的实体集"AspNetRoles"和 表"AspNetRoles"已经定义。每个实体集必须引用 唯一的架构和表。

at

System.Data.Entity.Core.Metadata.Edm.EdmModel.Validate() at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo) at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext 内部上下文) 在 System.Data.Entity.Internal.RetryLazy 2.GetValue(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.CreateObjectContextForDdlOps() at System.Data.Entity.Database.Exists() at Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext
1.IsIdentityV1Schema(DbContext db) 在 Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext 1..ctor(String nameOrConnectionString, Boolean throwIfV1Schema) at Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext 1..ctor(String nameOrConnectionString) at Apk.Model.ApkEntities..ctor() in c:\Users\Administrator\Documents\Visual Studio 2013\项目\Apk\Apk.Data\ApkEntities.cs:line 10 --- 从引发异常的先前位置的堆栈跟踪结束 --- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Data.Entity.Infrastructure.DbContextInfo.CreateInstance() at System.Data.Entity.Infrastructure.DbContextInfo..ctor(类型 contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func'1 resolver) at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistState 存在状态)在 System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration 配置)在 System.Data.Entity.Migrations.Design.MigrationScafffolder..ctor(DbMigrationsConfiguration 迁移配置) at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner 跑步者)在 System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(String 语言,字符串根命名空间) at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() 在 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action 命令)在建模期间检测到一个或多个验证错误 代:

AspNetRoles:名称:具有架构"dbo"和架构的实体集"AspNetRoles"和 表"AspNetRoles"已经定义。每个实体集必须引用 唯一的架构和表。

为什么会发生此错误?

我需要更改 IdentityRole 和 IdentityUser。

 public class ApkEntities : IdentityDbContext<ApplicationUser>
    {
        public ApkEntities ()
            : base("ApkEntities")
        {
        }
        public virtual void Commit()
        {
            base.SaveChanges();
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
            modelBuilder.Configurations.Add(new AspNetRoleConfiguration());
            modelBuilder.Configurations.Add(new AspNetUserConfiguration());
        }
    }

 public class AspNetRoleConfiguration : EntityTypeConfiguration<ApplicationRole>
    {
        public AspNetRoleConfiguration(string schema = "dbo")
        {
            ToTable(schema + ".AspNetRoles");
            HasKey(x => x.Id);
            Property(x => x.Id).HasColumnName("Id").IsRequired().HasMaxLength(128).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
            Property(x => x.Name).HasColumnName("Name").IsRequired().HasMaxLength(256);
            Property(x => x.NameFa).HasColumnName("NameFa").IsRequired().HasMaxLength(50);
            Property(x => x.Description).HasColumnName("Description").IsOptional().HasMaxLength(250);
            Property(x => x.IsActivated).HasColumnName("IsActivated").IsRequired();
        }
    }
 public class AspNetUserConfiguration : EntityTypeConfiguration<ApplicationUser>
    {
        public AspNetUserConfiguration(string schema = "dbo")
        {
            ToTable(schema + ".AspNetUsers");
            HasKey(x => x.Id);
            Property(x => x.Id).HasColumnName("Id").IsRequired().HasMaxLength(128).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
            Property(x => x.Email).HasColumnName("Email").IsOptional().HasMaxLength(256);
            Property(x => x.PhoneNumberConfirmed).HasColumnName("PhoneNumberConfirmed").IsOptional();
            Property(x => x.FirstName).HasColumnName("FirstName").IsOptional();
            Property(x => x.LastName).HasColumnName("LastName").IsOptional();
            Property(x => x.DateCreated).HasColumnName("DateCreated").IsRequired();
            Property(x => x.PasswordHash).HasColumnName("PasswordHash").IsOptional();
            Property(x => x.SecurityStamp).HasColumnName("SecurityStamp").IsOptional();
            Property(x => x.UserName).HasColumnName("UserName").IsRequired().HasMaxLength(256);
        }
    }

     public class ApplicationRole : IdentityRole
        {
            public string Description { get; set; }
            public string NameFa { get; set; }
            public bool IsActivated { get; set; }
        }
     public class ApplicationUser : IdentityUser
        {
            public ApplicationUser()
            {
                DateCreated = DateTime.Now;
                LF_FavoraiteTeam = new Collection<LF_FavoraiteTeam>();
            }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public DateTime DateCreated { get; set; }
            public DateTime? LastLoginTime { get; set; }
            public bool? IsActivated { get; set; }
            public virtual ICollection<LF_FavoraiteTeam> LF_FavoraiteTeam { get; set; }

}

尝试在 ApkEntities 上下文中显式定义 ApplicationUser 和 ApplicationRole DbSets,并删除 IdentityRole 和 IdentityUser 对象中已有的属性。这些已经通过从 IdentityDbContext 继承来定义。

最新更新