Объединить MyDbContext с IdentityDbContext
У меня есть MyDbContext в отдельном проекте библиотеки классов Data Accass Layer. И у меня есть проект ASP.NET MVC 5 с IdentityDbContext по умолчанию. Два контекста используют одну и ту же базу данных, и я хочу использовать таблицу AspNetUsers для внешнего ключа для некоторых моих таблиц. Поэтому я хотел бы объединить два контекста, и я тоже хочу использовать ASP.NET Identity.
Как я могу это сделать?
Пожалуйста посоветуй,
Это мой контекст после слияния:
public class CrmContext : IdentityDbContext //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 { get; set; }
public DbSet CaseLog { get; set; }
public DbSet Comment { get; set; }
public DbSet Parameter { get; set; }
public DbSet Sign { get; set; }
public DbSet Template { get; set; }
public DbSet Read { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
Вот мой класс RepositoryBase:
public class RepositoryBase : IRepositoryBaseAsync, IDisposable
where TContext : IdentityDbContext //DbContext
where TEntity : class
{
private readonly TContext _context;
private readonly IObjectSet _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();
}
else
{
throw new NullReferenceException("Context cannot be null");
}
}
}
Исключение типа'System.Data.Entity.ModelConfiguration.ModelValidationException'
произошла в EntityFramework.dll, но не была обработана в коде пользователя
Дополнительная информация: Одна или несколько ошибок проверки были обнаружены во время генерации модели:
Обновление: я нашел решение.
Мне пришлось удалить это соглашение об именах:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
И перенести модель ef cf в db, чтобы переименовать мои таблицы с соглашениями об именах идентичности asp.net. Это работает сейчас!