将 EF 8 与 this 提供商结合使用。
如何告诉 EF 在插入时为特定列使用数据库定义的默认值?
我可以设置默认值,例如:
modelBuilder.Entity<MyEntity>()
.Property(x => x.MyProperty)
.HasDefaultValue("0.0.0.0.5.32");
但这似乎是不好的做法。
我们在您的实体类或数据库上下文中存储字符串文字。
我在我的数据库和迁移中也定义了
0.0.0.0.5.32
,如果我想更改这个值,我必须在很多地方更改它。
有办法解决这个问题吗?或者是 EF 强制实施了不良做法。
您可以使用辅助类来存储此默认值:
public class DefaultValues
{
public const DefaultConstString = "value";
public static string DefaultStaticString { get; } = "value";
public static readonly string DefaultReadonlyString = "value";
}
应用后不应更改迁移,这就是如果您仍然使用将
"0.0.0.0.5.32"
存储为 const
或 static string
的辅助类,迁移仍会将其转换为带有值的字符串(魔术字符串)的原因。
如果 helper 中的值发生变化,您应该创建一个新的迁移。如果您知道如何删除旧迁移(我不是指删除迁移代码,而是使用
dotnet ef migrations remove
)