收到错误:"A specified Include path is not valid. The EntityType Field' does not declare a navigation pr



创建方法:

 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。字段'没有声明导航属性名称'ScheduleField'.

为什么我得到这个错误?

您必须在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();
}

相关内容

最新更新