示例类结构
class Order
{
public int Id { get; set; }
public DateTime Date { get; set; }
public List<OrderDetail> Details { get; set; }
}
class OrderDetail
{
public int Id { get; set; }
public int Qty { get; set; }
public Item Item { get; set; }
}
class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
class ElectronicItem : Item
{
public MoreDetail Detail { get; set; }
}
class MoreDetail
{
public int Id { get; set; }
public string SomeData { get; set; }
}
为了用所有导航属性填充订单对象,我写了
context.Orders.Include("Details").Include("Details.Item")
我也想加载MoreDetail对象,因此我尝试了
context.Orders.Include("Details").Include("Details.Item.Detail")
它不起作用。如何加载完整的Order对象?
答案 0 :(得分:1)
目前无法实现,但正如您已找到的那样,社区要求User DataVoice提供此功能。 MS Connect还有相关的错误。
您根本无法加载派生类型的导航属性,但可以使用单独的查询加载它们:
var moreDetails = context.MoreDetails;
EF应自动修复您的导航属性。如果您在原始查询中使用过滤订单,则必须在更多详细信息查询中应用该过滤器:
var moreDetails = cotnext.MoreDetials.Where(m => m.Item.Order ....);