我的代码非常简单:
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()时)。
所以,问题出在同步区域,imho,所以我的问题可以标记为已解决。