我非常需要帮助。我花了一整天时间,甚至没有一个小时浪费在一个项目上。我有一个Linq to SQL数据层,并使用以下代码对数据库进行简单的插入:
using (var odc = new OrdersDataContext())
{
try
{
var id = GetNextOrderId(odc);
order.ID = id;
odc.tblOrders.InsertOnSubmit(order);
odc.SubmitChanges();
}
catch (Exception ex)
{
Logger.LogException(ex);
}
}
由于其他遗留代码,这是一个在SQL 2000上运行的数据库,我无法进行数据库更改,但此代码在某一点上工作正常,然后才停止工作。这是说:
无法将值NULL插入列'ID',表'Order';列不允许空值。 INSERT失败。
但正如您可以从代码中看到的那样,当我单步执行代码时,我可以清楚地看到,ID列正在获取有效的ID号。 由于某些原因,即使我设置ID字段,它也会尝试将其作为null插入,即使此代码在之前正常工作。我已经完全恢复了数据库并重建了数据层,但无济于事。
我对此感到很难过,而且我已经不在时间了。
答案 0 :(得分:1)
所以,答案是非常奇怪的,我不是百分之百确定原因。基本上我所做的是完全重建LINQ to SQL数据层(只是在设计器中拖放相同的表),然后完全清理和重建整个解决方案。之后,代码再次神奇地工作。无需更改代码。
由于某种原因,代码被不正确地缓存并导致它无法将对象传输到数据层(我的猜测)。在这种情况下回来似乎是一个奇怪的错误。