实体框架(EF)枚举问题/错误/功能
#dotnet #database #csharp #entityframework

我以前在实体框架(EF)问题/功能上遇到的问题。即使我使用 .hasdefaultValue() ef core,它仍然不起作用。

Image description

手头的问题如下:
https://github.com/dotnet/efcore/issues/15070

开发人员使用枚举作为列的属性时,默认值将永远是第一个枚举,通常为0,无法更新。在固定或修改该功能之前,我们如何避免此问题?以下是两个可能的解决方案。


1.将特定号码(排除0)分配给枚举

public enum State
{
    Walking = 1,
    Reading = 2,
    Drinking = 3,
}

优点:解决方案清晰易理解。

cons:需要维护,因为每个人都需要为枚举值分配一个特定数字。

2.将默认值作为枚举的第一个属性

public enum State
{
    Walking,
    Reading,
    Drinking,
}

PROS:无需分配一个数字,并且枚举保持清洁。

缺点:为了防止某人在不理解的情况下修改枚举,需要测试案例。


概括

我亲自使用了使默认值成为枚举的第一个属性的方法。我认为,这是一种更清洁的方法,只需要一个测试案例即可确保订单不会意外更改。

另一方面,将特定数字(不包括0)分配给每个枚举属性可能是一项巨大的努力,尤其是如果枚举具有超过100个属性。它可能会变得很混乱。

最终,选择一种方法以确保数据库中的数据是您想要的。欢迎有关此主题的任何讨论。谢谢!