1

Мы пытаемся добавить Идентичность 3 наших существующих клиентов приложений путем расширения AspNetUsersНевозможно использовать таблицу «AspNetUsers» в схеме «» для лица «AspNetUsers», так как он используется для другого объекта

public class ApplicationUser : IdentityUser 
{ 
    public string BusinessName { get; set; } 
    public string ContactName { get; set; } 
    public string CountryCode { get; set; } 
    public virtual Countries Country { get; set; } 
    public string AddressLabel { get; set; } 
    public string Phone { get; set; } 
    public DateTime? FollowUp { get; set; } 
    public bool MailingList { get; set; } 
    public int SubscriptionId { get; set; } 
    [ForeignKey("SubscriptionId")] 
    public virtual Subscriptions Subscription { get; set; } 
    public virtual ICollection<Devices> Devices { get; set; } 
    public virtual ICollection<Downloads> Downloads { get; set; } 
    public virtual ICollection<Invoices> Invoices { get; set; } 
    public virtual ICollection<Notes> Notes { get; set; } 
    public virtual ICollection<Referrals> Referrals { get; set; } 
} 

CustomersContext наследует от IdentityDbContext

public partial class CustomersContext : IdentityDbContext<ApplicationUser> 
{ 
    protected override void OnConfiguring(DbContextOptionsBuilder options) 
    { 
     options.UseSqlServer(@"Server=(localdb)\\mssqllocaldb;Database=Customers;Trusted_Connection=True;MultipleActiveResultSets=true"); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder);// we have to do this becauee we are inheriting from IdentityDbContext<ApplicationUser> not DbContext 
     modelBuilder.Entity<AspNetRoleClaims>(entity => 
     { 
      entity.Property(e => e.RoleId).HasMaxLength(450); 

      entity.HasOne(d => d.Role).WithMany(p => p.AspNetRoleClaims).HasForeignKey(d => d.RoleId); 
     }); 

     modelBuilder.Entity<AspNetRoles>(entity => 
     { 
      entity.HasIndex(e => e.NormalizedName).HasName("RoleNameIndex"); 

      entity.Property(e => e.Id).HasMaxLength(450); 

      entity.Property(e => e.Name).HasMaxLength(256); 

      entity.Property(e => e.NormalizedName).HasMaxLength(256); 
     }); 

     modelBuilder.Entity<AspNetUserClaims>(entity => 
     { 
      entity.Property(e => e.UserId).HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.AspNetUserClaims).HasForeignKey(d => d.UserId); 
     }); 

     modelBuilder.Entity<AspNetUserLogins>(entity => 
     { 
      entity.HasKey(e => new { e.LoginProvider, e.ProviderKey }); 

      entity.Property(e => e.LoginProvider).HasMaxLength(450); 

      entity.Property(e => e.ProviderKey).HasMaxLength(450); 

      entity.Property(e => e.UserId).HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.AspNetUserLogins).HasForeignKey(d => d.UserId); 
     }); 

     modelBuilder.Entity<AspNetUserRoles>(entity => 
     { 
      entity.HasKey(e => new { e.UserId, e.RoleId }); 

      entity.Property(e => e.UserId).HasMaxLength(450); 

      entity.Property(e => e.RoleId).HasMaxLength(450); 

      entity.HasOne(d => d.Role).WithMany(p => p.AspNetUserRoles).HasForeignKey(d => d.RoleId).OnDelete(DeleteBehavior.Restrict); 

      entity.HasOne(d => d.User).WithMany(p => p.AspNetUserRoles).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<ApplicationUser>(entity => 
     { 
      entity.HasIndex(e => e.BusinessName).HasName("BusinessNameIndex"); 

      entity.HasIndex(e => e.NormalizedEmail).HasName("EmailIndex"); 

      entity.HasIndex(e => e.NormalizedUserName).HasName("UserNameIndex"); 

      entity.Property(e => e.Id).HasMaxLength(450); 

      entity.Property(e => e.AddressLabel) 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.BusinessName) 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.ContactName) 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CountryCode) 
       .IsRequired() 
       .HasMaxLength(2) 
       .HasColumnType("varchar") 
       .HasDefaultValue("00"); 

      entity.Property(e => e.Email).HasMaxLength(256); 

      entity.Property(e => e.FollowUp).HasColumnType("date"); 

      entity.Property(e => e.MailingList).HasDefaultValue(true); 

      entity.Property(e => e.NormalizedEmail).HasMaxLength(256); 

      entity.Property(e => e.NormalizedUserName).HasMaxLength(256); 

      entity.Property(e => e.UserName).HasMaxLength(256); 

      entity.HasOne(d => d.Country).WithMany(p => p.Users).HasForeignKey(d => d.CountryCode).OnDelete(DeleteBehavior.Restrict); 

      entity.HasOne(d => d.Subscription).WithMany(p => p.Users).HasForeignKey(d => d.SubscriptionId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Countries>(entity => 
     { 
      entity.HasKey(e => e.CountryCode); 

      entity.Property(e => e.CountryCode) 
       .HasMaxLength(2) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CalCost).HasColumnType("decimal"); 

      entity.Property(e => e.CountryName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CultureCode) 
       .IsRequired() 
       .HasMaxLength(8) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CurrencyCode) 
       .IsRequired() 
       .HasMaxLength(3) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceFooter) 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.TaxName) 
       .HasMaxLength(3) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.TaxRate).HasColumnType("decimal"); 
     }); 

     modelBuilder.Entity<Devices>(entity => 
     { 
      entity.HasKey(e => e.DeviceID); 

      entity.Property(e => e.CALs).HasDefaultValue(0); 

      entity.Property(e => e.DeviceName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.UnlockedFrom).HasColumnType("date"); 

      entity.Property(e => e.UnlockedTo).HasColumnType("date"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Devices).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Downloads>(entity => 
     { 
      entity.HasKey(e => e.DownloadId); 

      entity.Property(e => e.DownloadDate).HasColumnType("date"); 

      entity.Property(e => e.DownloadVersion) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Downloads).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Invoices>(entity => 
     { 
      entity.HasKey(e => e.InvoiceNr); 

      entity.Property(e => e.AddressLabel) 
       .IsRequired() 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceDate).HasColumnType("date"); 

      entity.Property(e => e.InvoiceDescription) 
       .IsRequired() 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceNet).HasColumnType("money"); 

      entity.Property(e => e.InvoiceTax).HasColumnType("money"); 

      entity.Property(e => e.InvoiceTotal).HasColumnType("money"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Invoices).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Notes>(entity => 
     { 
      entity.HasKey(e => e.NoteId); 

      entity.Property(e => e.NoteDate).HasColumnType("date"); 

      entity.Property(e => e.NoteSubject) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.NoteText) 
       .IsRequired() 
       .HasColumnType("varchar"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Notes).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<ReferralSources>(entity => 
     { 
      entity.HasKey(e => e.ReferralSourceId); 

      entity.Property(e => e.ReferralSourceName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 
     }); 

     modelBuilder.Entity<Referrals>(entity => 
     { 
      entity.HasKey(e => e.ReferralId); 

      entity.Property(e => e.ReferralDate).HasColumnType("date"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.ReferralSource).WithMany(p => p.Referrals).HasForeignKey(d => d.ReferralSourceID).OnDelete(DeleteBehavior.Restrict); 

      entity.HasOne(d => d.User).WithMany(p => p.Referrals).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Subscriptions>(entity => 
     { 
      entity.HasKey(e => e.SubscriptionId); 

      entity.Property(e => e.SubscriberId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.Property(e => e.SubscriptionExpires).HasColumnType("date"); 
      entity.Property(e => e.TotalCALs).HasDefaultValue(0); 

     }); 
    } 

    public virtual DbSet<AspNetRoleClaims> AspNetRoleClaims { get; set; } 
    public virtual DbSet<AspNetRoles> AspNetRoles { get; set; } 
    public virtual DbSet<AspNetUserClaims> AspNetUserClaims { get; set; } 
    public virtual DbSet<AspNetUserLogins> AspNetUserLogins { get; set; } 
    public virtual DbSet<AspNetUserRoles> AspNetUserRoles { get; set; } 
    public virtual DbSet<ApplicationUser> ApplicationUser { get; set; } 
    public virtual DbSet<Countries> Countries { get; set; } 
    public virtual DbSet<Devices> Devices { get; set; } 
    public virtual DbSet<Downloads> Downloads { get; set; } 
    public virtual DbSet<Invoices> Invoices { get; set; } 
    public virtual DbSet<Notes> Notes { get; set; } 
    public virtual DbSet<ReferralSources> ReferralSources { get; set; } 
    public virtual DbSet<Referrals> Referrals { get; set; } 
    public virtual DbSet<Subscriptions> Subscriptions { get; set; } 
} 

Мы пытаемся использовать аутентификацию Microsoft. Когда я запустить приложение и войти, используя Microsoft Account, то приложение взрывает в AccountControllerExternalLoginCallback на этой линии

var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false); 

Ошибка

Cannot use table 'AspNetUsers' in schema '' for entity 'AspNetUsers' since it is being used for another entity. 

Там нет другого DbContext кроме CustomersContext. Я не могу найти никаких объектов, сопоставляющих AspNetUsers, кроме ApplicationUser.

Переходов нет. Такая же ошибка возникает и при попытке создать начальную миграцию.

dnx ef migrations add initial 

Извините за количество введенного кода и все же не включая эту важную информацию.

ответ

2

Как вы наследуете от IdentityDbContext, вам не нужно воссоздавать AspNet* DbSet, просто добавьте новую таблицу.
Ваш CustomersContext должен выглядеть так:

public partial class CustomersContext : IdentityDbContext<ApplicationUser> 
{ 
    protected override void OnConfiguring(DbContextOptionsBuilder options) 
    { 
     options.UseSqlServer(@"Server=(localdb)\\mssqllocaldb;Database=Customers;Trusted_Connection=True;MultipleActiveResultSets=true"); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder);// we have to do this because we are inheriting from IdentityDbContext<ApplicationUser> not DbContext 

     // override the users tables with your properties 
     modelBuilder.Entity<ApplicationUser>(entity => 
     { 
      entity.HasIndex(e => e.BusinessName).HasName("BusinessNameIndex"); 

      entity.HasIndex(e => e.NormalizedEmail).HasName("EmailIndex"); 

      entity.HasIndex(e => e.NormalizedUserName).HasName("UserNameIndex"); 

      entity.Property(e => e.Id).HasMaxLength(450); 

      entity.Property(e => e.AddressLabel) 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.BusinessName) 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.ContactName) 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CountryCode) 
       .IsRequired() 
       .HasMaxLength(2) 
       .HasColumnType("varchar") 
       .HasDefaultValue("00"); 

      entity.Property(e => e.FollowUp).HasColumnType("date"); 

      entity.Property(e => e.MailingList).HasDefaultValue(true); 

      entity.HasOne(d => d.Country).WithMany(p => p.Users).HasForeignKey(d => d.CountryCode).OnDelete(DeleteBehavior.Restrict); 

      entity.HasOne(d => d.Subscription).WithMany(p => p.Users).HasForeignKey(d => d.SubscriptionId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Countries>(entity => 
     { 
      entity.HasKey(e => e.CountryCode); 

      entity.Property(e => e.CountryCode) 
       .HasMaxLength(2) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CalCost).HasColumnType("decimal"); 

      entity.Property(e => e.CountryName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CultureCode) 
       .IsRequired() 
       .HasMaxLength(8) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.CurrencyCode) 
       .IsRequired() 
       .HasMaxLength(3) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceFooter) 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.TaxName) 
       .HasMaxLength(3) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.TaxRate).HasColumnType("decimal"); 
     }); 

     modelBuilder.Entity<Devices>(entity => 
     { 
      entity.HasKey(e => e.DeviceID); 

      entity.Property(e => e.CALs).HasDefaultValue(0); 

      entity.Property(e => e.DeviceName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.UnlockedFrom).HasColumnType("date"); 

      entity.Property(e => e.UnlockedTo).HasColumnType("date"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Devices).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Downloads>(entity => 
     { 
      entity.HasKey(e => e.DownloadId); 

      entity.Property(e => e.DownloadDate).HasColumnType("date"); 

      entity.Property(e => e.DownloadVersion) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Downloads).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Invoices>(entity => 
     { 
      entity.HasKey(e => e.InvoiceNr); 

      entity.Property(e => e.AddressLabel) 
       .IsRequired() 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceDate).HasColumnType("date"); 

      entity.Property(e => e.InvoiceDescription) 
       .IsRequired() 
       .HasMaxLength(255) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.InvoiceNet).HasColumnType("money"); 

      entity.Property(e => e.InvoiceTax).HasColumnType("money"); 

      entity.Property(e => e.InvoiceTotal).HasColumnType("money"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Invoices).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Notes>(entity => 
     { 
      entity.HasKey(e => e.NoteId); 

      entity.Property(e => e.NoteDate).HasColumnType("date"); 

      entity.Property(e => e.NoteSubject) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 

      entity.Property(e => e.NoteText) 
       .IsRequired() 
       .HasColumnType("varchar"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.User).WithMany(p => p.Notes).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<ReferralSources>(entity => 
     { 
      entity.HasKey(e => e.ReferralSourceId); 

      entity.Property(e => e.ReferralSourceName) 
       .IsRequired() 
       .HasMaxLength(50) 
       .HasColumnType("varchar"); 
     }); 

     modelBuilder.Entity<Referrals>(entity => 
     { 
      entity.HasKey(e => e.ReferralId); 

      entity.Property(e => e.ReferralDate).HasColumnType("date"); 

      entity.Property(e => e.UserId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.HasOne(d => d.ReferralSource).WithMany(p => p.Referrals).HasForeignKey(d => d.ReferralSourceID).OnDelete(DeleteBehavior.Restrict); 

      entity.HasOne(d => d.User).WithMany(p => p.Referrals).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict); 
     }); 

     modelBuilder.Entity<Subscriptions>(entity => 
     { 
      entity.HasKey(e => e.SubscriptionId); 

      entity.Property(e => e.SubscriberId) 
       .IsRequired() 
       .HasMaxLength(450); 

      entity.Property(e => e.SubscriptionExpires).HasColumnType("date"); 
      entity.Property(e => e.TotalCALs).HasDefaultValue(0); 

     }); 
    } 

    public virtual DbSet<Countries> Countries { get; set; } 
    public virtual DbSet<Devices> Devices { get; set; } 
    public virtual DbSet<Downloads> Downloads { get; set; } 
    public virtual DbSet<Invoices> Invoices { get; set; } 
    public virtual DbSet<Notes> Notes { get; set; } 
    public virtual DbSet<ReferralSources> ReferralSources { get; set; } 
    public virtual DbSet<Referrals> Referrals { get; set; } 
    public virtual DbSet<Subscriptions> Subscriptions { get; set; } 
} 

Или вы можете полностью создать модель без вызова base.OnModelCreating, вы можете скопировать OnModelCreatingfrom the source code

+0

Спасибо @agua с Марса. Я удалил AspNet * DbSet из CustomersContext, как вы предложили, однако одна и та же ошибка повторяется в той же строке. Такая же ошибка также сохраняется при запуске «Обновление базы данных dnx ef -c CustomersContext» – Vague

+0

Моя ошибка @agua от mars. Я не удалял все AspNet * DbSet из ClientContext. Теперь у меня есть, и это работает! – Vague

 Смежные вопросы

  • Нет связанных вопросов^_^