【发布时间】:2011-12-09 02:07:33
【问题描述】:
我查看了几个线程,但没有找到适合我目的的解决方案 (至少我不明白我该如何实现它)
我有一个 WCF 服务,它使用 Linq to SQL 来检索、更新和删除我的 SQL Server 上的对象。
我创建了一个简单的关系数据库,它有一个 客户和订单之间的一对多关系, Order 和 OrderDetails 之间的一对多关系,
现在 My Orders 有一个 CustomerID 的外键,OrderDetails 有一个 Order ID 的外键。
但是 OrderDetails 还包含 Products 表中 ProductID 的 FK。
基本上我现在要做的是使用 OrderID 修改 OrderDetails 并使用 ProductID 添加另一个产品。
虽然我一直收到 ForeignKeyReferenceAlreadyHasValueException,但我遇到了问题
我写了这个,我知道这是完全错误的,但当时我不知道(我对 SQL、Linq to SQL 等完全陌生)我不能这样做。
OrderDetail item = new OrderDetail();
item.OrderID = orderItem.OrderID;
item.ProductID = orderItem.ProductID;
item.ProductQuantity = orderItem.ProductQuantity;
jacksDB.OrderDetails.InsertOnSubmit(item);
jacksDB.SubmitChanges();
我读到我必须使用类似这样的通用代码行来绘制实体或沿着这些线绘制的东西
var order = jacksDB.Orders.Single(o => o.OrderID == orderItem.OrderID);
var orderDetail = order.OrderDetails.Single(o => o.OrderID == orderItem.OrderID);
orderDetail.ProductID = orderItem.ProductID;
orderDetail.ProductQuantity = orderItem.ProductQuantity;
orderDetail.Discount = orderItem.Discount;
jacksDB.OrderDetails.InsertOnSubmit(orderDetail);
jacksDB.SubmitChanges();
也许有人可以展示一下,如果不是太多,请解释一下我如何正确地使用现有的 OrderID (FK) 将新的 OrderDetail 记录插入到我的 OrderDetails 表中,以便“编辑和添加/将产品删除到现有订单”
提前感谢您的帮助
约翰
【问题讨论】:
-
也许您可以发布创建表所需的 SQL,包括主键和外键?
标签: c# sql sql-server-2008 linq-to-sql