如何在没有导航属性映射的情况下关联实体

时间:2009-11-05 20:46:04

标签: linq entity-framework linq-to-entities

我有包含4个表的数据库

 TABLE TBLCARTITEM (CART_ID, ITEM_ID, PROMOTION_ID, many more cart item fields)
 TABLE XREFCARTITEMPROMOTION (CART_ID, ITEM_ID, PROMOTION_ID)
 TABLE TBLPROMOTION (PROMOTION_ID, PROMOTION_TYPE_ID, many more promotion fields)
 TABLE LKPROMOTIONTYPE (PROMOTION_TYPE_ID, PROMOTION_TYPE_DESCRIPTION)

XREFCARTIEMPROMOTION表是一个交叉引用表,它在TBLCARTITEM和TBLPROMOTION之间创建多对多关系。

TBLPROMOTION通过促销类型ID链接到LKPROMOTIONTYPE。

我正在尝试使用LINQ获取所有特定的购物车商品和相关促销活动。

到目前为止,除LKPROMOTIONTYPE表外,我还有其他所有内容。

using (WSE db = new WSE())
{ 
   var cartItems = db.XREFCARTITEM.Include("TBLPROMOTION")
           .FirstOrDefault(x => x.CART_ID == cartId);
}

这为我提供了购物车的所有内容,包括与每件商品相关的促销活动。但是,当我去尝试包含LKPROMOTIONTYPE表时,我得到以下运行时错误:

A specified Include path is not valid. The EntityType 'Model.XREFCARTITEM' does not declare a navigation property with the name 'LKPROMOTIONTYPE'.

我的问题是: 有没有人知道将LKPROMOTIONTYPE与上面的cartItems对象相关联的方法?

感谢。

1 个答案:

答案 0 :(得分:2)

这次回答了我自己的问题:

var cartItems = db.XREFCARTITEM
                  .Include("TBLPROMOTION.LKPROMOTIONTYPE")
                  .FirstorDefault(x => x.Cart_ID == cardId);