Asp.net 使用ICollection显示模型类中的外键关系

Asp.net 使用ICollection显示模型类中的外键关系,asp.net,asp.net-mvc,asp.net-mvc-4,model,foreign-keys,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Model,Foreign Keys,我有一个具有外键关系的模型类 public class AppointmentModel { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int AppointmentId { get; set; } [Required] public string AppointmentTime { get; set; } [Required] public int

我有一个具有外键关系的模型类

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; }
[ForeignKey(“VisitorId”)]
公共ICollection访问者{get;set;}

您应该使用哪种关系取决于您需要的是1:1关系还是1:n关系

由于每个AppointModel都有一个VisitorId,因此每个AppointModel将有一个访问者。因此navigationproperty是单个实例,没有集合