Führen Sie MyDbContext mit IdentityDbContext zusammen

Ich habe einen MyDbContext in einem separaten Data Accass Layer-Klassenbibliotheksprojekt. Und ich habe ein ASP.NET MVC 5-Projekt mit einem Standard-IdentityDbContext. Die beiden Kontexte verwenden dieselbe Datenbank, und ich möchte für einige meiner Tabellen die AspNetUsers-Tabelle als Fremdschlüssel verwenden. Daher möchte ich die beiden Kontexte zusammenführen und auch ASP.NET Identity verwenden.

Wie kann ich das machen?

Bitte Beratung,

Dies ist mein Kontext nach dem Zusammenführen:

public class CrmContext : IdentityDbContext<CrmContext.ApplicationUser> //DbContext
{
    public class ApplicationUser : IdentityUser
    {
        public Int16 Area { get; set; }
        public bool Holiday { get; set; }
        public bool CanBePublic { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

    public CrmContext()
        : base("DefaultConnection")
    {

    }

    public DbSet<Case> Case { get; set; }
    public DbSet<CaseLog> CaseLog { get; set; }
    public DbSet<Comment> Comment { get; set; }
    public DbSet<Parameter> Parameter { get; set; }
    public DbSet<Sign> Sign { get; set; }
    public DbSet<Template> Template { get; set; }
    public DbSet<Read> Read { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

Hier ist meine RepositoryBase-Klasse:

    public class RepositoryBase<TContext, TEntity> : IRepositoryBaseAsync<TEntity>, IDisposable
        where TContext : IdentityDbContext<CrmContext.ApplicationUser> //DbContext
        where TEntity : class
    {
        private readonly TContext _context;
        private readonly IObjectSet<TEntity> _objectSet;

        protected TContext Context
        {
            get { return _context; }
        }

        public RepositoryBase(TContext context)
        {
            if (context != null)
            {
                _context = context;
                //Here it is the error:
                _objectSet = (_context as IObjectContextAdapter).ObjectContext.CreateObjectSet<TEntity>();
             }
             else
             {
                 throw new NullReferenceException("Context cannot be null");
             }
         }
     }

Eine Ausnahme vom Typ'System.Data.Entity.ModelConfiguration.ModelValidationException' ist in EntityFramework.dll aufgetreten, wurde jedoch im Benutzercode nicht verarbeitet

Zusätzliche Information: Ein oder mehrere Validierungsfehler wurden während der Modellgenerierung festgestellt:

Update: Ich habe die Lösung gefunden.

Ich musste diese Namenskonvention entfernen:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

Und migrieren Sie das ef cf-Modell nach db, um meine Tabellen mit den Namenskonventionen der asp.net-Identität umzubenennen. Es funktioniert jetzt!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage