c# - 如何在父模型 CRUD 期间避免子属性 REQUIRED DataAnnotation
问题描述
请帮助我学习和更正我的代码...
目标:
- 在 City CRUD 期间:唯一需要的属性是 Name,ZipCode 可以为 null
- 添加 Contact.ContactAddresses 时,唯一需要的属性是 Line1,用户可以将 City 保留为 null/empty
- 一个联系人(需要 Name)可以有多个联系人地址(只有 ContactAddress.Line1 被填写,而 ContactAddress.CityId 和 ContactAddress.City 可以为空/空)
问题:
当尝试更新包含具有NULL City 属性的联系人地址的联系人时,会引发错误,说明“城市:姓名字段是必需的,并且不能为空。 ”。
我相信当尝试更新包含 NULL ContactAddress.CityId 的联系人时,ContactAddress.City.Name 会引发 DataAnnotation 错误。
问题:
如何在城市的 CRUD 期间在 City.Name 中使用所需的DataAnnotation,但在联系人的 Contact.ContactAddresses 的 CRUD 期间允许 City(以及因此 City.Name)为 NULL?
请参阅下面的型号代码:
public class Contact
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage = "Name field is required and must not be empty.")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "Name must be 3-50 characters long.")]
public string Name { get; set; }
public ICollection<ContactAddress> ContactAddresses { get; set; }
}
public class ContactAddress
{
[Key]
public int Id { get; set; }
[StringLength(70, MinimumLength = 3, ErrorMessage = "AddressLine must be 3-70 characters long.")]
public string AddressLine { get; set; }
public int? CityId { get; set; }
public City City { get; set; }
}
public class City
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage = "Name field is required and must not be empty.")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "Name must be 3-50 characters long.")]
public string Name { get; set; }
[StringLength(10, MinimumLength = 3, ErrorMessage = "Name must be 3-10 characters long.")]
public string ZipCode { get; set; }
}
解决方案
推荐阅读
- c - 如何获取我在 HWND 上绘制的所有像素代码?
- r - 如何使用两个列表来创建表(列和行)
- python-3.x - "TypeError: product_show() missing 1 required positional argument: 'Option'"
- javascript - 如何使用 javascript 关闭 file_browse 对话窗口
- angular6 - 如何从不同的域以角度 6 呈现 html 响应
- wpf - 在 wpf,MVVM 灯下,突然简单的 relaycommand 不起作用。我应该从哪里开始寻找?
- unit-testing - 在 AOT/release 或 profile 模式下运行颤振/飞镖测试?
- android - VoicePackage ID 是否保证稳定?
- javascript - 打字稿函数重载和缺少参数
- c++ - 将 32 位遗留代码移植到 64 位时如何处理不断变化的数据类型大小?