1

创建方法:

 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' 的导航属性。

为什么我会收到此错误?

4

1 回答 1

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();
}
于 2013-04-26T15:27:45.233 回答