我们有一个使用自动数据迁移的应用程序,不允许数据丢失。根据公司的政策,我不允许更改这些设置。
我们在几张bool表中也有几个可空列?类型和int?类型。
我今天刚刚发现,有一段代码检查了现有的数据库记录,并将可空列的值设置为默认值(分别为false和0)。当前行为减缓了应用程序的运行速度。我希望强制数据库/EF设置默认值,而不允许空值。
到目前为止,我在没有运气的情况下尝试了以下几项:
实际上,我想在Code中复制以下MySQL语句:
ALTER TABLE orders
CHANGE COLUMN ScaleToFit ScaleToFit TINYINT(1) NOT NULL DEFAULT 0;对于公司政策方面的问题,有什么好的解决方案吗?谢谢!
发布于 2019-02-28 21:15:08
这可能是我第一个非编程的答案。
我最真诚地希望没有优雅的解决方案--也没有任何解决方案--通过移民来实现这一点。这意味着数据丢失检测存在漏洞,这将是个坏消息。它被认为是数据丢失,因为null值也可能包含信息,即故意“不知道”。在布尔值的情况下:三状态被转换为二状态。这在您的情况下是不正确的,因此这个修复过程,但这不会改变规则。
根据公司的政策,我不允许更改这些设置。
政策是有目的的,但几乎总是转化为目的。可能是因为策略比其基本目的更容易定义、执行和检查。但就像在古德哈特定律..。
当一个度量成为一个目标时,它就不再是一个好的度量。
...each政策有一天可能会失败,不再是一个好政策。认识到这一点并在必要时灵活执行政策的能力是各组织值得称道的特点。
我想说的是:建议暂时暂停此策略,以便允许只应用这些具有默认值的非空字段的迁移。如果空值实际上是没有意义的,而且实际上应该是非空的,那么从一开始就应该是空的,这是实现您想要的位置的最简单的方法。
https://stackoverflow.com/questions/54933484
复制相似问题