0

Я импортировал таблицы базы данных из MS SQL Server 2012 и перенес их в Visual Studio 2015, используя концепцию кода, показанную в примере this. Его работа, но только сейчас я просто добавил новую таблицу в SQL Server, и я хотел обновить DBContext в своем проекте с помощью новой таблицы.Есть ли способ создать таблицу на SQL Server, а затем обновить ее до моего проекта?

Я попытался ввести «add-migration new_table_name» в консоли диспетчера пакетов, но это не сработало. Я понимаю, что мне нужно закодировать новую модель вручную в папке «Модели» моего проекта, тогда только эта миграция будет работать. Но я чувствую, что мне удобнее создавать таблицу в SQL Server. Итак, можно ли каким-либо образом создать таблицу на SQL Server, а затем обновить миграцию в моем проекте?

Будет ли это делать, если я создам еще один ado.net, но на этот раз я сначала выбираю DB? После этого я удалю код сначала DBContext, configuration.vb и модели. Это повлияет на мой проект позже?

+0

Выполняет обратную инженерию, на которую ссылается Диана. –

ответ

2

Если ваша основная цель - создать таблицы сначала в базе данных и затем автоматически обновить ваш проект, тогда вы должны использовать Database First.

Тем не менее, вы должны учитывать недостатки базы данных Во-первых: в моем личном опыте я перестал использовать этот подход в основном из-за двух причин:

  • Database Первая поддержка будет прекращена, насколько я знаю , EF Core не включает инструмент редактора. Некоторые ссылки об этом: a post from Julie Lerman, EF Core roadmap и an early announcement from Microsoft.
  • Редактор модели имел несколько ошибок и причуд, из-за которых код время от времени прерывался. Эти ошибки скорее всего не будут исправлены (см. Предыдущий пункт). Такие вещи, как изменение типа существующего поля, изменение внешних ключей и т. Д.
  • У меня было много проблем из-за слияния репозитория исходного кода с автоматически сгенерированными файлами сущностей. Особенно (но не только), когда несколько человек работали с одними и теми же объектами, поэтому мы получали конфликты слияния в автоматически сгенерированном коде. Кроме того, автоматически сгенерированный код иногда не был проверен правильно, поэтому он вышел из синхронизации с edmx. Я не уверен, что это происходит и с другими людьми, но кажется, что иногда Visual Studio, редактор, инструмент генерации исходного кода фона и менеджер исходного кода TFS просто не работают вместе.

Итак, если вы действительно не можете жить без создания первых таблиц в базе данных, продолжайте работу с базой данных Сначала, но вы должны учитывать то, что теряете, если не используете Code First. Этот подход широко рекомендуется по причине.

Обычно основной причиной для людей, использующих Database First в настоящее время, является невозможность переноса устаревшего кода в подход Code First. Насколько я знаю, общепризнано, что Code First - это правильный способ пойти иначе. Здесь у вас есть an interesting post about this (даже если он немного старый, написанный для EF 4.1, когда был введен Code First, он имеет дело с основными плюсами и минусами каждого подхода).

Обходной путь для вас может заключаться в том, чтобы использовать Code First, а также использовать доступные инструменты, которые автоматически генерируют ваши объекты First Code, делая обратную разработку из таблиц базы данных. С этим вы все равно можете создавать свои таблицы непосредственно в базе данных, но продолжайте использовать Code First с миграциями и всем остальным. Здесь у вас есть a post from Julie Lerman about some of those tools. Могут быть более свежие инструменты, но я не использовал их, и я не знаю о них.

Примечание: мой личный опыт работы с базой данных Сначала был плохим и не продолжался слишком долго. Возможно, кто-то с более позитивным опытом в этом подходе может дать более полезное представление об этом. Я использую Code First на некоторое время и действительно предпочитаю этот подход. Мой ответ может быть немного предвзятым.

+0

Спасибо за полезное объяснение и предложение! Я думаю, что вашего опыта достаточно, чтобы сказать мне, что я должен выбрать. Я думаю, что буду придерживаться первого кода :) – Nurul

+0

Добро пожаловать! – Diana

+0

Не могли бы вы помочь мне [здесь] (http://stackoverflow.com/questions/42362172/add-migration-error-object-reference-not-set-to-an-instance-of-an-object)? – Nurul

0

AFAIK,

EF миграции должна служить код-Первый подход, тогда как вы хотите использовать базу данных первых, что означает миграции является то, что не предназначено для вас.

Вы можете достичь большинства схемных функций БД и настроить атрибуты таблиц и его столбцов с помощью EF с помощью атрибутов аннотации данных и свободного API API, переопределив метод OnModelCreating в вашем подклассе DbContext.

+0

Могу ли я просто скопировать вставку другой таблицы modelBuilder.Entity (Of .....), а затем добавить и изменить его на имя моей новой таблицы в методе OnModelCreating? – Nurul

+0

Или я должен сначала перейти на базу данных? – Nurul

+0

будет ли это делать, если я создам еще один ado.net, но на этот раз я сначала выбираю DB? После этого я удаляю код сначала DBContext и модели. Это повлияет на мой проект позже? – Nurul

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