问题描述
我有一个具有外键关系的模型类,
public class AppointmentModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AppointmentId { get; set; }
[Required]
public string AppointmentTime { get; set; }
[Required]
public int AppointmentRoom { get; set; }
[ForeignKey("VisitorId")]
public VisitorModel Visitors { get; set; }
public int VisitorId { get; set; }
}
public class VisitorModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int VisitorId { get; set; }
[Required]
public string VisitorName { get; set; }
public int VisitorAddr { get; set; }
}
但是我发现将外键类定义为ICollection
。两种声明类型有什么区别?我们应该使用哪一个?
[ForeignKey("VisitorId")]
public ICollection<VisitorModel> Visitors { get; set; }
解决方法
您应该使用哪种关系取决于您是否需要1:1关系或1:n关系。
由于每个AppointmentModel都有一个VisitorId,所以每个AppointmentModel都会有一个Visitor(否)。因此,navigationproperty是一个实例,没有任何集合。