我有一个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属性上获得空对象引用。
答案 0 :(得分:0)
我需要将Delegate()构造函数从public更改为private。
我的答案基于这个答案:https://stackoverflow.com/a/22813915/1758319。构造函数必须位于包含要延迟加载的对象的对象上,且必须公开可访问。
即
public Delegate() { }