我尝试使用实体框架选择数据库中的所有项目以及所有依赖项。
我在选择时遇到以下错误 指定的包含路径无效。 EntityType'RequestModel.RequestType'未声明名为'FieldDefinitions,ListItems'的导航属性。
这是我的代码,我确信它的内容很简单。
var reqs = new List<RequestType>();
using (var db = new ITISS_RequestEntities())
{
reqs = db.RequestTypes.Include("FieldDefinitions,ListItems").ToList();
}
这是我的模特
public partial class RequestType
{
public RequestType()
{
this.Requests = new HashSet<Request>();
this.FieldDefinitions = new HashSet<FieldDefinition>();
}
public int RequestType1 { get; set; }
public string TypeDescription { get; set; }
public virtual ICollection<Request> Requests { get; set; }
public virtual ICollection<FieldDefinition> FieldDefinitions { get; set; }
}
public partial class FieldDefinition
{
public FieldDefinition()
{
this.EntryDefinitions = new HashSet<EntryDefinition>();
this.ListItems = new HashSet<ListItem>();
this.RequestTypes = new HashSet<RequestType>();
}
public int RequestField { get; set; }
public string FieldName { get; set; }
public string FieldReference { get; set; }
public string ControlType { get; set; }
public virtual ICollection<EntryDefinition> EntryDefinitions { get; set; }
public virtual ICollection<ListItem> ListItems { get; set; }
public virtual ICollection<RequestType> RequestTypes { get; set; }
}
public partial class ListItem
{
public ListItem()
{
this.FieldDefinitions = new HashSet<FieldDefinition>();
}
public int ListItemID { get; set; }
public string ItemName { get; set; }
public virtual ICollection<FieldDefinition> FieldDefinitions { get; set; }
}
答案 0 :(得分:0)
首先,您正在使用虚拟ICollections,因此无论如何都应该通过延迟加载提供所有内容。
如果你真的想强制整个树的一次加载,那么改变这个
reqs = db.RequestTypes.Include("FieldDefinitions,ListItems").ToList();
到这个
reqs = db.RequestTypes.Include("FieldDefinitions").Select("ListItems").ToList();
另外,如果你添加
using System.Data.Entity
到文件的顶部,您将能够使用强类型扩展方法进行包含.....因此......
reqs = db.RequestTypes.Include(rt => rt.FieldDefinitions).Select(fd => fd.ListItems).ToList();
实际上this是实体框架查询真正有用的页面