代码优先空导航属性

时间:2013-05-15 18:58:49

标签: c# asp.net entity-framework code-first

我有一个非常奇怪的问题,我似乎无法在谷歌上找到答案。

我目前有以下Code First / DB结构:

public class Prospect {

    [Key]
    public int ProspectId { get; set; }
    public int ProspectCompanyId { get; set; }
    public int? ImportUserId { get; set; }
    public int? ProspectUserId { get; set; }
    public int? SalesUserId { get; set; }
    public int? CampaignId { get; set; }

    [ForeignKey("CampaignId")]
    public virtual ICollection<CampaignEvent> CampaignEvents { get; set; }

    [ForeignKey("CampaignId")]
    public virtual Campaign Campaign { get; set; }
}

public class CampaignEvent
{
    [Key]
    public int CampaignEventId { get; set; }
    public int CampaignId { get; set; }
    public int UserId { get; set; }
    public string ActionType { get; set; }
    public string ActionSubject { get; set; }
    public string ActionTemplate { get; set; }
}

问题在于,当我尝试返回如下的查询时:

var prospects = db.Prospects.Include("CampaignEvents");

prospects.First().CampaignEvents为空 - 应填充记录。

我甚至采用了Entity Framework生成的SQL并用它成功执行了它,直接在数据库中返回了pros和campagin事件。

我不知道该做什么 - 它很奇怪,我没有收到任何错误,只是一个空集。

如果您需要任何其他详细信息,请与我们联系!

1 个答案:

答案 0 :(得分:0)

尝试

var prospects = db.Prospects.Include("CampaignEvents");

var value = prospects.FirstOrDefault(p=>p.CampaignEvents.Any());