引用对象在EF6集合中没有被填充

本文关键字:填充 集合 对象 EF6 引用 | 更新日期: 2023-09-27 17:53:44

所以我有一个有SalesmanRegion的模型。销售人员属于一个地区。

Salesman.cs

public class Salesman : Employee
{
    public Salesman()
    {
        this.Invoices = new List<Invoice>();
    }
    public int? RegionId { get; set; }
    [ForeignKey("RegionId")]
    public virtual Region Region { get; set; }
    public virtual ICollection<Invoice> Invoices { get; set; }
}

Salesman继承了Employee,存储了基本的名称、地址等数据——这些数据是不相关的。

Region.cs

public class Region
{
    public Region()
    {
        this.Salesmen = new List<Salesman>();
    }
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public int? SalesManagerId { get; set; }
    [ForeignKey("SalesManagerId")]
    public virtual Salesman SalesManager { get; set; }
    public virtual ICollection<Salesman> Salesmen { get; set; }
}

我遇到的问题是Region.Salesmen没有像其他项目那样由EF填充。

区域在Salesman.Region属性中填充得很好。

Stuff tried and in project

  • 延迟加载打开(我已经明确启用了)
  • 重命名属性名称sales -> Salesmans
  • 数据库有正确的模式
  • 更改ICollectionISet

我可能在想,这可能与命名约定有关,比如推销员->推销员,而不是推销员-> Salesmans

引用对象在EF6集合中没有被填充

所以我通过给ICollection<Salesman> Salesmen属性添加一个属性来解决这个问题。

现在我的模型是这样的…

public class Region
{
    public Region()
    {
        this.Salesmen = new List<Salesman>();
    }
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public int? SalesManagerId { get; set; }
    [ForeignKey("SalesManagerId")]
    public virtual Salesman SalesManager { get; set; }
    [InverseProperty("Region")]
    public virtual ICollection<Salesman> Salesmen { get; set; }
}

不要问我为什么它可以工作,为什么EF没有一点帮助就不能连接…