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!