我的代码非常简单:
Context.AddObject("EntitiesSetName", newObjectName);
Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
它工作正常,但只有一次 - 第一次.那个时候,在跟踪了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.
Run Code Online (Sandbox Code Playgroud)
tempResult将具有下一个值:1.
因此,似乎创建了记录(当程序挂起时)并且现在存在,但是当我使用其他工具手动检查数据库时 - 它没有!
我做错了什么?是某种缓存问题还是其他什么?
编辑:
我找到了问题的根源.这根本不是EF问题,但这是我用来手动控制数据库(Benthic)的工具的问题.
当工具连接到同一个DB时,我的程序会陷入某种死锁状态(当我用SaveChanges()调用时).
所以,问题是在同步区域,imho,所以我的问题可以标记为已解决.