0

我有一个名为UnitHistoryEntities. 数据库存储在 SQL Express 2012 中。Windows 7 64 位。

  1. 我用context = new UnitHistoryEntities().
  2. 我将此上下文传递到几个对话框中,这些对话框从用户那里收集一些信息。在此期间可能执行了一些查询。
  3. 基于该输入,我构造了一个新的 Unit 实体var unit = new Unit(),设置了一些属性,并将其添加到上下文中context.Units.AddObject(unit)
  4. 然后我打电话context.SaveChanges()

调用SaveChanges()never, ever 返回(我已经给了它至少 10 分钟)并且从不抛出异常。如果我删除AddObject(),它将返回而不对数据库进行任何更改,因为没有任何修改。

为什么SaveChanges()永远不回来?有人遇到过这种现象吗?

当我的程序处于这种状态时,我能够从 SQL Management Studio 连接并在数据库上执行查询。

4

3 回答 3

0

实体它的功能是添加到表中,每个表都有一个名为自己的函数,您可以使用实体将以下内容添加到数据库中:

UnitHistoryEntities context=new UnitHistoryEntities();
Unit unit=new Unit();
unit.field1=value1;
unit.field2=value2;
context.AddtoUnit(unit);
context.SaveChange();
于 2012-12-16T06:40:56.760 回答
0

原来我遇到的问题与这个问题非常相似。我有一个没有设置的 DateTime 字段。我制作了一个控制台应用程序,它在我的应用程序正在执行的上下文中执行完全相同的操作。在这种情况下,SaveChanges() 确实返回了,但有例外The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated.

所以我现在将我的 DateTime 字段设置为 1/1/1900,我会将它视为一个空日期。我的程序现在可以正常运行。

奇怪的是我没有在我的 WPF 应用程序中抛出异常,但我在控制台应用程序中做到了......

于 2012-12-16T18:47:52.540 回答
0

这是因为 EF 在您尝试插入的数据上抛出了 DbEntityValidationException。如果 EF 抑制错误,您可以使用记录查询和错误。

context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
于 2017-08-28T06:29:17.040 回答