创建方法:
public List<Field> GetScheduleDetails()
{
var schedulefields = DBcontextFactory.Context.Set<Field>).Include("ScheduleField").ToList();
}
使用上述方法,我试图从两个表中获取所有已连接(field.fieldid = schedulefield.fieldid)的记录。字段表与schedulefield表相关。对不起,如果我不熟悉技术术语。
现场模型:
public partial class Field : DOIEntity
{
public Field()
{
this.FilerResponses = new HashSet<FilerResponse>();
this.ScheduleFields = new HashSet<ScheduleField>();
}
public int FieldId { get; set; }
public string FieldDisplayName { get; set; }
public int FieldTypeId { get; set; }
public string HelpText { get; set; }
public Nullable<bool> OtherTextAllowed { get; set; }
public Nullable<int> ChoiceGroupId { get; set; }
public virtual FieldType FieldType { get; set; }
public virtual ICollection<FilerResponse> FilerResponses { get; set; }
public virtual ICollection<ScheduleField> ScheduleFields { get; set; }
}
ScheduleField模型:
public partial class ScheduleField
{
[Key]
public int ScheduleId { get; set; }
public int FieldId { get; set; }
public byte SortOrder { get; set; }
public Nullable<bool> IsMandatory { get; set; }
public Nullable<int> ParentFieldId { get; set; }
public Nullable<int> ParentChoiceId { get; set; }
public virtual Field Field { get; set; }
public virtual Schedule Schedule { get; set; }
}
当我调用该方法时,我收到此错误:
指定的包含路径无效。 EntityType 'WorldBank.DOI.Data.Field'未声明导航属性 名称'ScheduleField'。
为什么我收到此错误?
答案 0 :(得分:6)
您必须在Include字符串中使用Field类的属性名称:
public List<Field> GetScheduleDetails()
{
var schedulefields = DBcontextFactory.Context.Set<Field>).Include("ScheduleFields").ToList();
}
这将急切加载与Field对象关联的ScheduleField对象。
注意,您也可以急切加载多个级别。例如,如果您想要急切加载ScheduleField对象的日程表,您可以这样做:
public List<Field> GetScheduleDetails()
{
var schedulefields = DBcontextFactory.Context.Set<Field>).Include("ScheduleFields.Schedule").ToList();
}