繁体   English   中英

EF6集合中未填充引用的对象

[英]Referenced objects are not being populated in EF6 collection

因此,我有一个具有SalesmanRegion的模型。 推销员属于一个区域。

推销员

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; }

}

我遇到的问题是,与其他项目一样,EF没有填补Region.Salesmen

Region在Salesman.Region属性中填充良好。

在项目中尝试过的东西

  • 延迟加载已启用(我已明确启用它)
  • 重命名属性名称,即。 推销员->推销员
  • 数据库具有正确的架构
  • ICollection更改为ISet

我可能认为这可能与诸如Salesman-> Salesman而不是Salesman-> Salesmans这样的命名约定有关

提前致谢。

因此,我通过向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在没有一点帮助的情况下无法将其链接..但是它确实起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM