虚拟导航属性未加载

时间:2014-04-21 00:41:00

标签: asp.net-mvc entity-framework entity-framework-6

我有一个POCO课程:

public class Delegate : ConferenceMember
{
    public int? CommitteeMemberCommitteeEntryId { get; set; }

    [Required]
    public int RegistrationId { get; set; }

    public virtual CommitteeMemberCommitteeEntry CommitteeMemberCommitteeEntry { get; set; }

    public virtual Registration Registration { get; set; }

    private Delegate()
    { }

    public Delegate(int conferenceId) : base(conferenceId)
    {

    }
} 

我在这个方法中引用它:

private bool isHeadDelegate(ConferenceMember item, ApplicationUser user)
    {
        if (item.MemberType == ConferenceMemberType.Delegate)
        {
            if (((xxx.Models.Delegate)item).Registration.RegistrationType == RegistrationType.DelegationRegistration)
            {
                return ((xxx.Models.Delegate)item).Registration.ApplicationUserId == user.Id;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
}

即使RegistrationId设置为有效的对象ID,也不会加载Registration对象。

我的理解是,由于我有虚拟关键字,该对象将被延迟加载,因此我可以引用它,即我在Registration属性上获得空对象引用。

1 个答案:

答案 0 :(得分:0)

我需要将Delegate()构造函数从public更改为private。

我的答案基于这个答案:https://stackoverflow.com/a/22813915/1758319。构造函数必须位于包含要延迟加载的对象的对象上,且必须公开可访问。

public Delegate() { }