我试图用现有用户使用LINQ插入订单行。该程序应只插入订单&订单明细,因为用户已经存在,我不想为每个订单添加新用户。插入订单也自动插入用户实体
取而代之,程序现在将Order,OrderDetails与User一起插入。所以,我在用户表中获取重复的用户。
我遍历cartitems并创建ORDERDETAILS行并将它们添加到Order表。
order o = new order() { orderDate = DateTime.Today};
foreach (CartItem ci in items)
{
orderdetail od = new orderdetail() { itemId = ci.ItemId, itemType = char.Parse(ci.ItemType), price = int.Parse(ci.Price.ToString()) };
o.orderdetails.Add(od);
}
user u = Users.GetUserByUserId(int.Parse(Session["userId"].ToString()));
Orders.AddOrder(o, u);
的下面是我如何添加订单
public static Boolean AddOrder(order o, user u)
{
try
{
u.orders.Add(o);
db.orders.InsertOnSubmit(o);
db.SubmitChanges();
return true;
}
catch
{
return false;
}
}
如果删除db.orders.InsertOnSubmit(O);中,数据库没有改变和没有顺序添加到数据库中。如果我添加该行,它会同时插入订单,订单细节和用户数据。
我对LINQ很新,请赐教,如果您有任何想法。谢谢。
请不要丢弃这样的所有例外。如果你不能以有意义的方式处理异常,那么就不要抓住它。 – 2010-07-12 21:57:00
实际上,我想捕获函数返回的布尔值,并在页面上显示相应的消息。但是为了清晰的代码,我现在删除了它们。 – TTCG 2010-07-12 22:01:53
这可能与这些静态存储库类有关,以及您是如何(或不是*)管理您的L2S DataContext。我期望'User'和'Order'必须连接到同一个DataContext。它也可能与你在'User'类和表上定义身份的方式有关。这些细节隐藏在这里,所以我们不能肯定地说。 – Jay 2010-07-13 02:58:44