如何在 EF Core 中使用默认值而不违反 DRY?

问题描述 投票:0回答:1

将 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 强制实施了不良做法。

c# entity-framework-core
1个回答
0
投票

您可以使用辅助类来存储此默认值:

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

© www.soinside.com 2019 - 2024. All rights reserved.