我的订单实体的保存功能看起来像这样,它在sumbmitChanges行中断:
public void SaveOrder ( Order order ) {
if (order.OrderId == 0)
orderTable.InsertOnSubmit(order);
else if (orderTable.GetOriginalEntityState(order) == null) {
orderTable.Attach(order);
orderTable.Context.Refresh(RefreshMode.KeepCurrentValues , order);
}
orderTable.Context.SubmitChanges();
}
订单实体包含另外两个实体;地址实体和信用卡实体。现在我希望这两个实体有时为空。
现在我猜测为什么会抛出错误是因为这两个内部命令都是空的。如果是这种情况,如何将新订单插入数据库,同时两个实体(Address和creditCard)为空。
编辑:
所以我暂时删除了信用卡实体和地址实体,但我意识到导致问题的原因。该订单有一个图像集合(图像是一个实体),它抛出错误,因为(我假设),我不能插入一个新订单与订单有一堆已经存在的图像。所以我知道问题是什么,但我不知道如何解决它。任何帮助将非常感激。感谢
答案 0 :(得分:4)
您的图片实体是否来自不同的DataContext?只要它们来自您用来保存订单的相同DataContext,就不应该再尝试添加它们。
答案 1 :(得分:2)
问题在于,Linq to SQL已经知道Adress和信用卡了,但是当你告诉它插入订单(持有地址和信用卡)时,Linq to SQL也会尝试插入这两个entite(它对整个图表都这样做。
我的猜测是你需要a)确保你没有将现有的entites附加到新的或b)首先插入新实体然后连接你的关联。