Почему контекст моей сущности не обновляется после добавления столбца в базу данных? - PullRequest
0 голосов
/ 16 октября 2018

В основном есть простое приложение, которое я сделал для тестирования EF.Я добавил DataModel, затем создал объект источника данных, как говорится в учебнике MSDB.

Привязка данных работает хорошо, но возникает проблема, когда я добавляю или удаляю столбец из таблицы sql (например, в SSMS ALTER TABLE xxx ADD yyy varchar(50)).

Можно ли обновить / обновить модель данных без меня?Я имею в виду, я не хочу запускать IDE и нажимать «Обновить модель из базы данных», потому что пользователи будут массово добавлять новые столбцы.Является ли Entity Framework хорошей идеей для этой идеи?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

В Entity Framework у вас есть два варианта.
1. Создать базу данных и сгенерировать модель из нее
2. Создать модель и сгенерировать базу данных из нее

Entity Framework не подходитэто в режиме реального времени, оптимально вы выбираете тот, который вы хотите использовать, и делаете это один раз, вы всегда можете удалить старую базу данных и сгенерировать новую (при использовании опции 2) или удалить модель и сгенерировать новую (при использовании опции 1)

Вариант 1 называется подходом «Сначала база данных», что означает, что любые изменения в модели данных вносятся в базу данных, а ваша модель не подлежит корректировке / восстановлению
Вариант 2 называется «кодексом».Первый «подход», означающий, что изменения в модели данных делаются в классах Code и переносятся в базу данных

0 голосов
/ 16 октября 2018

Это не так, потому что это не имеет смысла и технически невозможно.Как это будет работать?Когда должно произойти это обновление?Должна ли база данных иметь постоянное соединение с вашим контекстом и моделью данных и обновлять ее при изменении схемы?Что произойдет, если у вас есть тысячи соединений, что будет потом?Кроме того, действительно ли вы ожидаете, что изменение схемы базы данных изменит ваш код на C #?Может ли база данных изменить скомпилированный код (dll) или просто исходный код?

И, кроме этих технических вопросов, ваша модель базы данных не является моделью вашего домена.Обычно они коррелируют, но это не всегда так.У меня было несколько приложений, в которых в коде c # было меньше объектов, чем в таблицах базы данных, и эти объекты не нуждались во всех столбцах базы данных.

Итак, нет, это было бы совершенно непригодно или совершенно неправильно.

0 голосов
/ 16 октября 2018

Я предполагаю, что вы используете подход «база данных сначала», основываясь на вашем вопросе, если так;взгляните на эту ссылку .

Если вы используете подход «сначала код», посмотрите на migrations .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...