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

时间:2015-06-06 13:26:07

标签: c# winforms sql-server-ce entity-framework-6

所以我的模型有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属性中填充正常。

在项目中尝试过的东西

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

我可能认为它可能与像Salesman这样的命名约定有关 - &gt;推销员而不是推销员 - &gt; Salesmans

提前致谢。

1 个答案:

答案 0 :(得分:0)

所以我通过向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在没有一点帮助的情况下无法将其链接起来......但确实如此。