2

我非常需要帮助。我花了一整天的时间,甚至没有一个小时可以浪费在一个项目上。我有一个 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”、表“订单”中;列不允许空值。插入失败。

但正如您从代码中看到的,以及当我逐步浏览代码时我可以清楚地看到的那样,ID 列正在获取一个有效的 ID 号。出于某种原因,即使我正在设置 ID 字段,它仍试图将其插入为空,即使此代码之前工作正常。我已经完全恢复数据库并重建数据层,但无济于事。

我被这件事难住了,而且时间紧迫,以至于我无法自拔。

4

1 回答 1

1

所以,这个问题的答案很奇怪,我不能 100% 确定为什么。基本上我所做的是完全重建 LINQ to SQL 数据层(仅在设计器中拖放相同的表),然后完全清理和重建整个解决方案。之后,代码又神奇地工作了。无需更改代码。

由于某种原因,代码缓存不正确,导致它无法将对象传输到数据层(我的猜测)。在这种情况下返回似乎是一个奇怪的错误。

于 2011-06-28T02:29:51.583 回答