我是实体框架和Linq(Visual Studio 2017 - EF 5.0)的新手。目前,我可以毫无问题地阅读表格,但我不知道如何阅读链接表格。 我目前的功能是这样做的,但确实有一个简单的方法,而不是我开发的两步阅读。如何使用实体框架链接读取一对多链接表?
public override List<CartItem> GetMyCartOrderItems(int UserID)
{
try
{
using (foodorderingdbEntities oMConnection = new foodorderingdbEntities())
{
var oCart = oMConnection.carts.SingleOrDefault(p => p.USER_ID == UserID);
if (oCartItems != null)
{
int CartID = oCart.CART_ID;
var oCartItems = oMConnection.cart_item.Where(p => p.CART_ITEM_CART_ID == CartID);
if (oCartItems != null)
{
List<CartItem> oRecList = new List<CartItem>();
foreach (cart_item oDBrec in oCartItems)
{
CartItem oRec = new CartItem();
oRec.CartID = oDBrec.CART_ITEM_ID;
oRec.CartItemID = oDBrec.CART_ITEM_CART_ID;
oRec.DateTime = oDBrec.CART_ITEM_ADDED_DATE_TIME;
oRec.SystemComments = oDBrec.CART_ITEM_SYSTEM_COMMENTS;
oRecList.Add(oRec);
}
return oRecList;
}
else { return null; }
}
else { return null; }
}
}
catch (Exception ex)
{
//IBLogger.Write(LOG_OPTION.ERROR, "File : MHCMySQLDataConection.cs, Method : GetPatientByID(1), Exception Occured :" + ex.Message + Environment.NewLine + "Trace :" + ex.StackTrace);
return null;
}
}
您可以看到我使用UserID从购物车表中获取购物车ID,然后使用Cart_Item表中的CartID检索购物车物品。 Cart_Item_Cart_ID是cart_item表中的外键。 (这是一对多表)
这就是我的想法,但显然不工作。
List<cart_item> oCartItems = oMConnection.carts.SingleOrDefault(c => c.USER_ID == UserID).cart_item.Where(p => p.CART_ITEM_CART_ID = c.CART_ID).ToList<cart_item>();
任何帮助吗?
public partial class cart
{
public cart()
{
this.cart_item = new HashSet<cart_item>();
}
public int CART_ID { get; set; }
public int USER_ID { get; set; }
public decimal ORDER_TOTAL_COST { get; set; }
public virtual ICollection<cart_item> cart_item { get; set; }
public virtual user user { get; set; }
}
您的购物车是否有导航属性的项目?它应该,如果是这样,那么只是'var oCart = db.carts.Include(x => x.Items).Where(...);'(确保你有'使用System.Data.Entity;'for lambda扩展包含) –
我在cart_item表中设置了外键。你能否完成上述查询,以便我能理解你在做什么?问题是我需要使用第一个表中的键来查询第二个表。 – PCG
完整的查询应该是'var oCart = oMConnection.carts.Include(x => x.Items).Where(c => c.USER_ID == UserID);'是你的意思吗?您可以发布您的购物车类,这将表明您是否正确设置了导航属性。本文可能有所帮助:https://msdn.microsoft.com/en-us/library/jj713564%28v=vs.113%29.aspx?f=255&MSPPError=-2147217396 –