8

我的代码很简单:

Context.AddObject("EntitiesSetName", newObjectName);
Context.SaveChanges();

它工作得很好,但只有一次——第一次。那个时候,我在 SaveChanges() 被跟踪后用 Shift+F5 中断了我的程序。这是一个调试过程,所以我手动从数据库中删除了一条新创建的记录,并在调试模式下再次运行程序。但它不再起作用了——它在调用 SaveChanges() 时“挂起”。

我看到的另一件奇怪的事情是:如果我在 addObject() 和 SaveChanges() 之前编写,它们被称为:

var tempResult = (from mydbRecord in Context 
                  where Context.myKey == 123 
                  select mydbRecord.myKey).Count(); 
// 123 is the key value of the record that should be created before the program hangs.

tempResult 将具有下一个值:1。

因此,似乎记录已创建(当程序挂起时)并且现在存在,但是当我使用其他工具手动检查数据库时 - 它没有!

我做错了什么?是某种缓存问题还是其他问题?

编辑:

我找到了问题的根源。这根本不是 EF 问题,而是我用来手动控制数据库的工具(Benthic)的问题。

当工具连接到同一个数据库时,我的程序与该工具陷入某种死锁(当我调用 SaveChanges() 时)。

所以,问题出在同步区域,恕我直言,所以我的问题可以标记为已解决。

4

0 回答 0