2010-08-27 2 views
9

Возможно, мне что-то не хватает, но в базе данных SQL Server 2008 R2, созданной Entity Framework 4, отсутствуют значения по умолчанию, которые я настроил с помощью конструктора EF.Entity Framework 4 и значения по умолчанию

Любые идеи, что я могу делать неправильно?

ответ

12

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

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

Однако стоит упомянуть, что шаблон генерации кода EntityObject T4 по умолчанию и шаблон POCO Entities по умолчанию будут устанавливать значение по умолчанию этого свойства в сгенерированном классе.

Вы можете проверить это, внимательно посмотреть на yourModelName.edmx.sql файл, который был создан с помощью VS2010 после нажатия на «Создать базу данных из модели ...». Как вы не можете видеть, не существует такой вещи, как это в нем:
ADD CONSTRAINT DEFAULT «Значение по умолчанию» для YourColumnName

+0

Спасибо за краткий ответ. Делает совершенный смысл. – Shaun

+0

Это имеет смысл, хотя затрудняет миграцию кода. Добавьте в существующую таблицу поле с нулевым значением, сгенерированный сценарий миграции из сравнения двух схем в SQL Studio не будет работать. Должно быть сделано вручную снова. – simbolo

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