EF6和FluentMigrator;设置默认值,而不是创建一列然后更新它

时间:2018-11-20 13:23:27

标签: c# entity-framework entity-framework-6 fluent-migrator

我在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,因此,该项目(作为一个整体)的策略可能是“数据库永远不提供自行设定的默认值”。是否有理由采用这种策略?是否采用/强制执行比允许db提供难以读取的默认值容易(例如,“客户端可能不知道db设置了什么默认值,因此必须读取它,或者继续使用自己的默认值)?可能有所不同/会带来不良后果”)

0 个答案:

没有答案