我有一个名为Client
的实体无法插入。
Client
继承自Person
的{{1}}继承。
这是我的模型类:
Party
这是单元测试,它在assert语句上失败(数据库中的手动检查确认了单元测试结果):
public class Client : Person
{
public Client()
{
CrimeIncidents = new List<CrimeIncident>();
Reseller = new Reseller();
}
public virtual ICollection<CrimeIncident> CrimeIncidents
{
get;
set;
}
public virtual Reseller Reseller { get; set; }
}
public class Person : Party
{
[CustomValidation(typeof(PartyRoleCustomValidation), "ValidateRSAIDNumber")]
public string IDSocialSecurityPassNum { get; set; }
[DisplayName("Name")]
public string NickName { get; set; }
[DisplayName("Full names")]
public string FullNames { get; set; }
public string Surname { get; set; }
public Gender? Gender { get; set; }
[DisplayName("Date of birth")]
[DataType(DataType.Date)]
public string DOB { get; set; }
}
public class Party
{
public Int64 Id { get; set; }
public virtual PartyRole PartyRole
{
get;
set;
}
//public List<Address> Adresses { get; set; }
public virtual string PostalAddress { get; set; }
[DataType(DataType.PostalCode)]
public virtual string PostalCode { get; set; }
public virtual string PhysicalAddress { get; set; }
[DataType(DataType.PostalCode)]
public virtual string StreetCode { get; set; }
//public List<EmailAddress> EmailAdresses { get; set; }
[DataType(DataType.EmailAddress)]
public virtual string EmailAddress { get; set; }
//public List<ContactNumber> ContactNumbers { get; set; }
[DataType(DataType.PhoneNumber)]
public virtual string CellNumber { get; set; }
[DataType(DataType.PhoneNumber)]
public virtual string PhoneNumber { get; set; }
[DataType(DataType.PhoneNumber)]
public virtual string FaxNumber { get; set; }
}
为什么这个插件无法正常工作?如何解决?
答案 0 :(得分:0)
如果此客户端连接到现有Person,则需要将Id传递给客户端。
否则,您需要在client.Person
导航属性中添加Person对象。
e.g。
您将此客户端与现有人员连接起来。
Client client = new Client();
client.Id = oldPerson.Id
如果您正在为新客户添加新客户。
Client client = new Client();
client.Person = new Person(){......}
答案 1 :(得分:0)
问题是Client
的构造函数中的以下语句:
Reseller = new Reseller();
经销商应该是可选的。设置不符合其自己的注释验证标准的新Reseller实例会导致SaveChanges方法失败而不会引发异常。删除语句修复了问题。