当前位置:  开发笔记 > 编程语言 > 正文

将非必需的字符串属性从null水合为空字符串

如何解决《将非必需的字符串属性从null水合为空字符串》经验,为你挑选了0个好方法。

如果我有一个模型类

public class Foo
{
    public string Property1 { get; set; } = string.Empty;
    ... other properties omitted for brevity
}

它被保存到数据库为null,因为它不是必需的属性.但现在当我检索属性为null的实体时.我在这个实体上有很多不需要的字符串属性,我不想对这些属性进行大量的空值检查,我只是希望它们在数据库中为null时被重新水化为空字符串.我不介意它们作为null存储在db中,但是当从db中检索实体时,如果它在db中为null,我希望将它映射回空字符串.

我认为这必须是一个相当常见的场景,并且想知道我是否缺少一些简单的方法来配置设置或其他东西.我是使用EF的新手.

在我的OnModelCreating这个属性我有:

.HasMaxLength(50)
.HasDefaultValue(string.Empty)

但它仍然存储为null并重新水合为null.我再次不介意它被存储为null但是如果它在db中为null,我希望它作为空字符串水合.

我尝试像这样修改模型类:

private string property1 = string.empty;
public string Property1
{
    get { return property1; }
    set { property1 = value ?? string.Empty; }
} 

认为EF必须使用setter但这仍然导致null属性.到目前为止,通过制作这样的属性,我能够解决它的唯一方法是:

private string property1 = string.empty;
public string Property1
{
    get { return property1 ?? string.empty; }
    set { property1 = value ?? string.Empty; }
} 

我真的宁愿不必像我这样做所有的财产.

任何人都可以提出一个更清洁的方法来做这件事或纠正我,如果我做错了什么或不寻常或认为它错了.我错过了一些更容易实现的方法吗?

我不想使属性成为必需属性,因为空字符串也不满足该情况.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有