如何关联未通过导航属性直接映射的实体

时间:2009-11-03 20:33:34

标签: entity-framework linq-to-entities

我有一个已填充了四个不同相关实体内容的对象。但是我有另一个实体,其中我不能包括作为查询的一部分,因为它没有在导航属性中直接关联到我正在拉的IQueryable表。我想要包含的实体与已成功包含的四个不同实体之一相关。

是否有办法将此实体作为我正在创建的整体对象的一部分(在db命中或之后)包含?

以下是我调用构建CARTITEM对象的示例:

    public List<CARTITEM> ListCartItem(Guid cartId)
    {
        //Create the Entity object
        List<CARTITEM> itemInfo = null;

        using (Entities webStoreContext = new Entities())
        {
                //Invoke the query
                itemInfo = WebStoreDelegates.selectCartItems.Invoke(webStoreContext).ByCartID(cartId).ToList();

        }

        //Return the result set
        return itemInfo;
    }

这里是selectCartItems过滤器(我通常会做包含的地方):

        public static Func<Entities, IQueryable<CARTITEM>> selectCartItems =
    CompiledQuery.Compile<Entities, IQueryable<CARTITEM>>(
        (cart) => from c in cart.CARTITEM.Include("ITEM").Include("SHIPPINGOPTION").Include("RELATEDITEM").Include("PROMOTION")
                  select c);

从这里我有我的CARTITEM对象。问题是我想在此对象中包含PROMOTIONTYPE表,但由于CARTIEM实体没有直接导航属性到PROMOTIONTYPE表,我收到错误。

如果您需要进一步澄清,请与我们联系。 谢谢, 比利

1 个答案:

答案 0 :(得分:0)

您可以使用join,如果它是相同的数据库和服务器,它应该在SQL中生成连接并在一次调用中完成所有操作...

LinqToEnties join example