2016-09-09 2 views
0

Мне нужно создать несколько новых объектов в новой или существующей базе данных, используя Entity Framework, которая должна будет взаимодействовать с некоторыми устаревшими таблицами, и мне интересно, какой лучший подход здесь. Я надеялся использовать Code First с миграциями.Код Entity Framework сначала вокруг существующей базы данных

Например, у меня есть существующая населенная Person таблицы, и мне нужно, чтобы создать Animal таблицы, которая будет содержать PersonId внешний ключ для ссылки на существующие людях.

Насколько я могу сказать, это мои варианты:

  • Создать новую DBContext (для новой БД) с DBSet<Animal>, используя код первых миграции и классы сущностей POCO. Устранены проблемы с настройкой внешнего ключа, указывающего на другую БД.
  • Создайте новый DBContext (предназначенный для существующей БД) с помощью DBSet<Animal> и создайте какие-то обертки POCO вокруг существующей таблицы. Я не уверен, что это возможно - я пробовал что-то вроде этого, но при применении миграции EF пытался создать таблицу Person. Я предположил, что это было бы сопоставить существующую таблицу вместо создания нового: первый

    [Table("Person")] 
    public class Person { 
    
  • Использование базы данных с существующей БД и создавать таблицы в существующей БД, но тогда я потеряю на использовании ПОКО и миграции с мои новые идеи.

Есть ли лучшие варианты, которые мне не хватает, или я должен сначала использовать базу данных?

+0

Would [код первого из базы данных] (https://msdn.microsoft.com/en-us/library/jj200620.aspx) или [Code First Миграция с существующая база данных] (https://msdn.microsoft.com/en-us/library/dn579398.aspx) работают на вас? – stuartd

+0

Обычно вы можете сделать кодовую работу с существующим db, поэтому я бы не переключился на db-first именно по этой причине. Вам просто нужно вникнуть в соглашения моделирования, которые применяются EF (часто в событии «OnModelCreating»), а также некоторые выборочные ручные изменения самих скриптов миграции для учета того, что уже существует. Вы можете копать настолько глубоко, насколько вам нужно в EF, и люди делают это регулярно, чтобы заставить его работать с самыми разными обстоятельствами. – SlimsGhost

+0

Я не знал, что первый код из базы данных существует - это выглядит идеально – woggles

ответ

2

Вы можете использовать EntityFramework Reverse POCO Code First Generator.

Reverse инженеры существующей базы данных и генерирует Entity Framework Code First Poco классы, отображения конфигурации и DbContext. Этот генератор был спроектирован так, чтобы его можно было настраивать с самого начала , но не фиксированного и жесткого, как другие генераторы. Перейдите и сыграйте с настройками в файле .tt, вот что это такое для.

Вот ссылка: EntityFramework Reverse POCO Generator

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