2015-09-08 41 views
1

我的程序正在将记录写入数据库表。到目前为止,它已经向这张表格写了大约58个新记录。突然间,我收到一条错误消息,提示“找不到或更改了行”。这很奇怪,因为我插入了一条新记录,而不是试图找到一个或更新现有的记录。下面是代码的小位,我使用创建一个对象,然后插入到表:System.Data.Linq.ChangeConflictException?行未找到或更改?但是,我插入,而不是更新

// create new comment object 
var comment = new Comment 
        { 
         TableName = "Circuit", 
         TableKey = circuitId, 
         Text = remarks, 
         CreatedOn = DateTime.Now, 
         CreatedByName = "loadCC03Circuits", 
         CreatedByUupic = "000000000" 
        }; 

cimsContext.Comments.InsertOnSubmit(comment); 
cimsContext.SubmitChanges(); 

我不太知道该怎么办,在这一点上。每个字段都有一个值,没有空值。而且,正如我所说的,在这种情况发生之前,已经有58条记录被这个相同的代码写出来,除了数据关闭之外(根据调试器会话中的字段值,这些记录不是)我是不太确定还有什么要检查的。有什么建议?

编辑:我在下面添加了一个答案,使这个问题消失。但是,我不确定这个解决方案为什么起作用。

+0

你看过这个问题吗? http://stackoverflow.com/questions/8851482/linq-row-not-found-or-changed – Chizzle

+0

我做到了。当他们从表中读取记录,修改记录,然后更新记录时,就会出现这个问题。就我而言,我只是想插入一条新纪录。这让我感到困惑:它说“行未找到或改变......”但我不想找一排或改变一个;我插入一个新的。 – Kevin

+0

您会看到关于可空列不匹配模型的第二个答案?可能是这样,只是一个镜头 – Chizzle

回答

1

我找到了一个解决方案,但不是“答案”。该解决方案,在这种情况下,是使包含的DateTime.Now值的变量:

var dateNow = DateTime.Now; 

我改变了受影响的代码行看起来像这样:奇迹

CreatedOn = dateNow, 

奇观,我不再收到错误。我不确定为什么这样解决了这个问题,我只是根据同事的建议尝试了这个。他认为我工作的沙箱数据库很慢,可能会影响DateTime.Now函数。无论如何,这使问题消失了。不过,我希望我有一个确定的答案。当我不明白为什么解决方案能够工作时,我讨厌让问题消失。

相关问题