https://docs.microsoft.com/en-us/ef/core/managing-schemas/scaffolding 使用EF Core 2.2.x
让我们说我有表,并且其中一个字段被定义为不允许空值和varchar(160)。当EF模型被架设时,使用数据批注的该字段应看起来像这样。
[Required]
[StringLength(160)]
public string Title { get; set; }
好,所以现在在我的代码中,我想更新该表中的一条记录,但是,此Title字段当前不是null而是一个空字符串。在为Title字段也提供非零长度的字符串之前,无法为其他字段更新此实体。这是设计使然吗?我可以理解是否正在创建这种类型的NEW实体,但是更新在这里也起作用吗?
我认为必填属性将允许使用空字符串,但是如果我明确添加该属性(AllowEmptyStrings = true),则该属性有效,所以这可能是默认设置吗?
[更新]
刚在文档中找到,是默认为false
https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.requiredattribute.allowemptystrings?view=netcore-2.2
对于那些发现这篇文章的人,您还需要使用[DisplayFormat(ConvertEmptyStringToNull = false)]来防止发送空值。