我正在使用EF Code First库试图处理预约安排应用程序。
我的模型将是客户,约会和约会类型...
基本上每个客户都可以有一组约会,每个约会可以有一个约会类型...
代码如下:
public class Client
{
[ScaffoldColumn(false)]
public int ClientID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[EmailAddress]
[Required]
public string Email { get; set; }
[DataType("DateTime")]
public DateTime Birthday { get; set; }
[Required]
public string CellPhone { get; set; }
public string HomePhone { get; set; }
public string Notes { get; set; }
public virtual ICollection<Appointment> Appointments{ get; set; }
public string Name {
get{
return FirstName + " " + LastName;
}
}
public class Appointment
{
[ScaffoldColumn(false)]
public int AppointmentID { get; set; }
[ScaffoldColumn(false)]
public int ClientID { get; set; }
[ScaffoldColumn(false)]
public int AppointmentTypeID { get; set; }
[Required]
public DateTime AppointmentDate { get; set; }
public string Notes { get; set; }
public virtual AppointmentType AppointmentType { get; set; }
public virtual Client Client { get; set; }
}
public class AppointmentType
{
[ScaffoldColumn(false)]
public int AppointmentTypeID { get; set; }
[Required]
public string Name { get; set; }
public string Description { get; set; }
public virtual Appointment Appointment { get; set; }
}
当我创建约会类型和客户端时,一切正常,但是当我创建约会时,我收到以下错误...
如果需要更多详细信息,请告知我们......我只想弄清楚我是否遗漏了设置中的任何内容。
当我在帖子上调试以创建约会时会发生这种情况...所有的ID都是0,这是正确的,但其他字段应该是否为空?或者它是否重要......只是不太熟悉这应该是什么样子,这是我的第一个EF Code First项目......
答案 0 :(得分:1)
根据您的设置,一个AppointmentType只能有一个约会。这是一对一的映射。在这种情况下,您最好将AppointmentType移动到约会实体中。否则,我认为更合乎逻辑的是,AppoitmentType可以有许多约会,但是一个Appointment只能有一个AppointmentType。因此,您应该在AppointmentType实体中有一个虚拟ICollection。
public class AppointmentType
{
[ScaffoldColumn(false)]
public int AppointmentTypeID { get; set; }
[Required]
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<Appointment> Appointments { get; set; }
}
我不确定这是导致问题的原因,但可能是。有时映射错误会导致抛出一些奇怪的异常。尝试一下,如果问题得到解决,请告诉我。
答案 1 :(得分:0)
根据您的约束,Appointment中的AppointmentType和Client不能为null。您可以删除约束或在对象属性中设置正确的对象。例如,创建Client和AppointmentType,然后为创建的Client创建Appointment,创建AppointmentType