如果我有一个模型类
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; } }
我真的宁愿不必像我这样做所有的财产.
任何人都可以提出一个更清洁的方法来做这件事或纠正我,如果我做错了什么或不寻常或认为它错了.我错过了一些更容易实现的方法吗?
我不想使属性成为必需属性,因为空字符串也不满足该情况.