使用ICollection在模型类中显示外键关系

问题描述

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

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是一个实例,没有任何集合。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...