我以前在实体框架(EF)问题/功能上遇到的问题。即使我使用 .hasdefaultValue() ef core,它仍然不起作用。
手头的问题如下:
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个属性。它可能会变得很混乱。
最终,选择一种方法以确保数据库中的数据是您想要的。欢迎有关此主题的任何讨论。谢谢!