首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF代码首先更改数据类型bool?放声大哭吗?到int

问EF代码首先更改数据类型bool?放声大哭吗?到int
EN

Stack Overflow用户
提问于 2019-02-28 20:08:35
回答 1查看 586关注 0票数 1

我们有一个使用自动数据迁移的应用程序,不允许数据丢失。根据公司的政策,我不允许更改这些设置。

我们在几张bool表中也有几个可空列?类型和int?类型。

我今天刚刚发现,有一段代码检查了现有的数据库记录,并将可空列的值设置为默认值(分别为false和0)。当前行为减缓了应用程序的运行速度。我希望强制数据库/EF设置默认值,而不允许空值。

到目前为止,我在没有运气的情况下尝试了以下几项:

  1. 从bool直接改变类型?放声大哭吗?到int。它会引发数据丢失异常。
  2. 在可空属性上添加必需属性和DefaultValue(false)属性。同样的,数据丢失异常。
  3. 在映射类中将.IsOptional()更改为.IsRequired()也会导致相同的异常。

实际上,我想在Code中复制以下MySQL语句:

代码语言:javascript
复制
ALTER TABLE orders 
CHANGE COLUMN ScaleToFit ScaleToFit TINYINT(1) NOT NULL DEFAULT 0;

对于公司政策方面的问题,有什么好的解决方案吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 21:15:08

这可能是我第一个非编程的答案。

我最真诚地希望没有优雅的解决方案--也没有任何解决方案--通过移民来实现这一点。这意味着数据丢失检测存在漏洞,这将是个坏消息。它被认为是数据丢失,因为null值也可能包含信息,即故意“不知道”。在布尔值的情况下:三状态被转换为二状态。这在您的情况下是不正确的,因此这个修复过程,但这不会改变规则。

根据公司的政策,我不允许更改这些设置。

政策是有目的的,但几乎总是转化为目的。可能是因为策略比其基本目的更容易定义、执行和检查。但就像在古德哈特定律..。

当一个度量成为一个目标时,它就不再是一个好的度量。

...each政策有一天可能会失败,不再是一个好政策。认识到这一点并在必要时灵活执行政策的能力是各组织值得称道的特点。

我想说的是:建议暂时暂停此策略,以便允许只应用这些具有默认值的非空字段的迁移。如果空值实际上是没有意义的,而且实际上应该是非空的,那么从一开始就应该是空的,这是实现您想要的位置的最简单的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54933484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档