4

示例类结构

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")

它没有用。如何加载完整的订单对象?

4

1 回答 1

1

目前这是不可能的,但它是用户数据语音社区要求的功能,正如您已经找到的那样。MS Connect上也有相关的错误。

您根本无法急切加载派生类型的导航属性,但您可以使用单独的查询加载它们:

var moreDetails = context.MoreDetails;

EF 应该自动修复您的导航属性。如果您在原始查询中对订单使用过滤器,则还必须在更多详细信息查询中应用该过滤器:

var moreDetails = cotnext.MoreDetials.Where(m => m.Item.Order ....);
于 2012-06-13T09:58:31.093 回答