Возможно ли сначала скомбинировать базу данных и первые модели кода с картой сущностей?

Я собираюсь начать веб-приложение, где я хотел бы использовать Entity Framework с (в основном) первыми моделями кода.

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

Ответ 1

Технически, это возможно, но я бы не рекомендовал его. Намного лучше всего использовать код - сначала по всем направлениям. Да, по иронии судьбы, вы можете использовать "code-first" с существующей базой данных.

Просто создайте POCO, которые соответствуют таблицам в вашей существующей базе данных. Если ваш POCO не назван так же, как и ваша таблица (не все имена таблиц будут действительными или соответствующими именами классов), вы можете использовать атрибут Table, чтобы явно указать EF, в какой таблице работает ваш POCO:

[Table("SomeTable")]
public class MyAwesomeEntity
{
    ...
}

Затем вам понадобится отдельный контекст для этой существующей базы данных и любых объектов, которые принадлежат ей. Все, что вам нужно сделать, это 1) рассказать, какую строку подключения он должен использовать и 2) отключить инициализацию базы данных, поэтому EF не пытается создать базу данных.

public MyExistingDatabaseContext : DbContext
{
    public MyExistingDatabaseContext()
        : base("MyExistingDatabaseConnectionStringName")
    {
        Database.SetInitializer<MyExistingDatabaseContext>(null);
    }

    // DbSets here
}

И что это. Всякий раз, когда вам нужно работать с сущностью из этой существующей базы данных, просто обновляйте этот контекст или используйте его каким-то другим способом, например, через контейнер DI (инъекции зависимостей) и отправляйтесь в город.

Ответ 2

Вы должны использовать код сначала из опции базы данных, если у вас уже есть доступная база данных, но вы хотите сначала использовать код.

1) В папке "Модели" щелкните правой кнопкой мыши на "Добавить", "Новый элемент",

2) Выберите ADO.NET Entity Data Model на вкладке Данные.

3) Введите название модели,

4) Выберите Code First из базы данных.

5) Выберите строку подключения,

6) Выберите объекты базы данных, которые вы хотите включить в вашу модель.

Вам не нужно писать код для контекста и модели с нуля, потому что он будет генерировать классы для вас.