2

Я довольно новичок в Entity Framework: я начал с первой модели базы данных для поддержки приложения, созданного с использованием странной смеси EF и простого старого SQL.Добавление сущности (и соответствующей таблицы) в EF DB-first model

Я создал свою собственную новую модель DB-first, и я в порядке с ней. Сегодня мой босс попросил меня добавить новую сущность. Отсутствие внешних ключей упрощает сценарий.

Я создал свой новый объект на диаграмме (он состоит из трех экземпляров сложного объекта, который я только что создал), но теперь я должен создать инкрементный скрипт БД для создания новой таблицы. Я должен сделать это и для MySQL и SQL Server, но давайте начнем со второго.

Так что теперь я вижу, что у меня есть проблемы компиляции «Нет отображения для объекта Entity» и если я использую «модель обновления из базы данных» команда, которую я не вижу варианта для толкающего изменения в БД, но это звучит правильно, учитывая слово «от».

ОК, я попытался щелкнуть «Сопоставление таблиц» в меню правой кнопки мыши, и я нашел способ сопоставить сущность с таблицей. Я собирался ввести новое имя таблицы в поле «Добавить таблицу или представление» и ... ПОДОЖДИТЕ! Я могу выбрать только таблицы

Я понимаю, что это просто для одной таблицы, поэтому я могу просто «Создать базу данных из модели», чтобы получить полный скрипт SQL, найти нужную таблицу, запустить ее в БД и «Обновить модель из БД», поэтому EF увидит таблицу, BUT

Я хотел бы понять, как создать инкрементные скрипты с Entity Framework. Это мой вопрос.

+1

От https://msdn.microsoft.com/en-us/data/jj205424: «Если вам нужно опубликовать изменения в уже развернутой базе данных, вам нужно будет отредактировать сценарий или сравнить схему инструмент для расчета сценария миграции ». –

ответ

7

Вы указываете, что у вас есть проект с базой данных, но, похоже, он работает с учетом кода.

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

Как вы создаете новую таблицу для объекта? Вы создаете новую таблицу в своей базе данных (CREATE TABLE ...). Затем, используя мастер «Обновить модель из базы данных», вы выбираете новую таблицу со вкладки «Добавить». EF автоматически создаст соответствующий класс EF. Если вы уже вручную создали объект, вы должны удалить его, иначе вы могли бы получить какое-то странное имя объекта (то есть Customer1).

База данных не имеет возможности поддерживать создание таблиц на уровне сущности. Изменения в базе данных всегда являются одним из способов: от базы данных до модели сущности, отсюда и термин «база данных сначала».

С другой стороны, если вам удобнее создавать объекты напрямую и вы хотите создать базу данных из набора объектов, вы должны искать дизайн «Code-First». Несмотря на название «code first», можно получить начальный набор классов сущностей из существующей базы данных. Термин «первый код» относится к возникновению изменений в структуре db/model.

+0

Объяснение было ясным и гладким.Я на самом деле пришел к выводу, что использование команды Generate SQL - отличный способ обновить модель, тогда мне нужно вручную вводить изменения, используя методы старой школы –