EF6 и FluentMigrator;установка значения по умолчанию против создания столбца и его обновления - PullRequest
0 голосов
/ 20 ноября 2018

Я сталкивался с этим шаблоном в миграции FluentMigrator C #:

        Create.Column("c").OnTable("t").InSchema("s").AsBoolean().Nullable();
        Update.Table("t").InSchema("s").Set(new {C = false}).AllRows();
        Alter.Column("c").OnTable("t").InSchema("s").AsBoolean().NotNullable();

Мне интересно, есть ли у первоначального разработчика конкретная причина для этого, а не:

        Create.Column("c").OnTable("t").InSchema("s").AsBoolean().NotNullable().WithDefaultValue(false);

Я понимаю, что есть небольшое различие в продолжающемся поведении БД;если каким-то образом код не устанавливает значение, то он избегает сбоя, предоставляя базе данных разумное значение по умолчанию (в контексте имеет смысл значение false). Мне кажется, что это целесообразный подход

Есть ли какие-либопродолжающиеся последствия использования значений столбцов по умолчанию в БД в связи с использованием EF6 в качестве стратегии доступа к данным?Кроме «было бы желательно иметь сбой, если используется значение по умолчанию, чтобы можно было идентифицировать неисправный код, который не предоставляет значение», я поражен тем, что добавление новых столбцов и определение для них разумных значений по умолчанию имеет db-sideпреимущества по сравнению с отсутствием

В другом месте кода для объектов предметной области я вижу, что это свойство действительно имеет значение false при создании соответствующего объекта, поэтому, возможно, политика для этого проекта (в целом)является то, что «база данных никогда не должна предоставлять значения по умолчанию самостоятельно».Есть ли причина для принятия этой стратегии?Проще ли принять / применить, чем позволить БД предоставлять значения по умолчанию, которые трудно считывать (т. Е. «Клиент может не знать, какое значение по умолчанию было установлено БД, и либо должен его прочитать, либо продолжить со своим собственным значением по умолчанию»).которые могут отличаться / вводить нежелательные побочные эффекты ")

...