Entity Framework, ASP.NET Identity совместно с Code-First

ADO.NET
  1. 8 месяцев(а)

    Всем привет, кто может помочь с архитектурой учебного проекта?

    Хочу совместить базу данных (одна БД) создаваемую Entity Framework Code-First, например:

        public class EFDbContext : DbContext
        {
            public EFDbContext() : base("name=MyDB")
            {
            }
            public virtual DbSet<Example> Examples { get; set; }
        }

    При этом для использования ASP.NET Identity, требуется создание класса наследуемого от другого класса из вашего примера на этом сайте:

        public class AppIdentityDbContext : IdentityDbContext<AppUser>
        {
            public AppIdentityDbContext() : base("name=IdentityDb") { }
    
            static AppIdentityDbContext()
            {
                Database.SetInitializer<AppIdentityDbContext>(new IdentityDbInit());
            }
    
            public static AppIdentityDbContext Create()
            {
                return new AppIdentityDbContext();
            }
        }

    При этом если я использую "name=MyDB" - у меня получается противоречие с использованием подхода Code-First :
    при использовании DropCreateDatabaseIfModelChanges - логично сбрасывание БД при обращении через разные модели, при значении по умолчанию (CreateDatabaseIfNotExists) возникнет ошибка исполнения.

    Скажите как это склеить?

  2. Alexandr_Erohin

    Jan 11 Администратор

    Не используйте DropCreateDatabaseIfModelChanges, используйте миграции БД - для Identity ссылка, для EF - ссылка

  3. Добавлено 8 месяцев(а) Darlok

    Александр, спасибо за ответ.
    Это очень интересная методология обязательно буду использовать, подходит для поздних стадий проекта и для модификации продуктивной среды.Но как-то это не очень красиво для ранних этапов проекта, т.е. если я как то всуну таблицу пользователей в БД основных сущностей, то каждый раз при модификации структуры модели мне придется создавать классы миграции, это накладывает дополнительные ограничения на разработку.
    Инстинктивно понимаю, что самый подходящий вариант для текущего этапа как раз DropCreateDatabaseIfModelChanges.
    Не понимаю как заставить EF уложить таблицы модели сущности и пользователей в одну базу данных?

  4. Этот вопрос просто не решается или я задаю глупый вопрос?

  5. Alexandr_Erohin

    Jan 18 Администратор
    Добавлено 8 месяцев(а) Alexandr_Erohin

    А что происходит если вы используете одну общую базу данных для Identity и EF?

     public AppIdentityDbContext() : base("name=MyDB") { }
  6. Извиняюсь я сам накосячил.

    Да все так и получилось, ссыка на одну базу и EF - все уложил в одну баз/

    Спасибо!

или зарегистрируйтесь чтобы ответить