C# 如何在父模型CRUD期间避免子属性必需的DataAnnotation
请帮助我学习并更正我的代码 目标:C# 如何在父模型CRUD期间避免子属性必需的DataAnnotation,c#,.net,entity-framework,data-annotations,C#,.net,Entity Framework,Data Annotations,请帮助我学习并更正我的代码 目标: 在城市CRUD期间:唯一需要的属性是Name,ZipCode可以为null 添加Contact.ContactAddresses时,唯一需要的属性是Line1,用户可以将城市设置为null/空 一个联系人(必须有姓名)可以有多个联系人地址(仅填写ContactAddress.Line1,而ContactAddress.CityId和ContactAddress.City可以为空) 问题: 当尝试更新包含具有空城市属性的联系人地址的联系人时,会抛出一个错误,例如
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; }
}
公共类联系人
{
[关键]
公共int Id{get;set;}
[必需(ErrorMessage=“名称字段是必需的,不能为空。”)]
[StringLength(50,MinimumLength=3,ErrorMessage=“名称长度必须为3-50个字符。”)]
公共字符串名称{get;set;}
公共ICollection联系人地址{get;set;}
}
公共类联系人地址
{
[关键]
公共int Id{get;set;}
[StringLength(70,MinimumLength=3,ErrorMessage=“地址行长度必须为3-70个字符)。]
公共字符串地址行{get;set;}
公共int?CityId{get;set;}
公共城市城市{get;set;}
}
公营城市
{
[关键]
公共int Id{get;set;}
[必需(ErrorMessage=“名称字段是必需的,不能为空。”)]
[StringLength(50,MinimumLength=3,ErrorMessage=“名称长度必须为3-50个字符。”)]
公共字符串名称{get;set;}
[StringLength(10,MinimumLength=3,ErrorMessage=“名称长度必须为3-10个字符。”)]
公共字符串ZipCode{get;set;}
}
请确保ContactAddress.City也为空,否则不应将其作为实体附加谢谢Shantanu先生!检查并确保ContactAddress.City为空实际上解决了问题@GAC我理解称呼人们先生是件事,但不要假设性别。那永远都不好。