Search code examples
c#.netvisual-studio-2010entity-framework-4sql-server-express

ObjectContext.SaveChanges() never returns if new object added to an ObjectSet. Has anyone experienced this?


I have an EF4 EDM called UnitHistoryEntities. The database is stored in SQL Express 2012. Windows 7 64-bit.

  1. I create a new context with context = new UnitHistoryEntities().
  2. I pass this context into a couple dialog boxes that collect a bit of information from the user. A few queries were probably performed during this.
  3. Based on that input, I construct a new Unit entity with var unit = new Unit(), set a few properties, and add it to the context with context.Units.AddObject(unit)
  4. I then call context.SaveChanges().

The call to SaveChanges() never, ever returns (I've given it at least 10 minutes) and never throws an exception. If I remove the AddObject(), it returns without making any changes to the database, because nothing was modified.

Why does SaveChanges() never return? Anyone experience this phenomenon?

I am able to connect and perform queries on the database from SQL Management Studio while my program is in this condition.


Solution

  • Turns out the problem I'm having is very similar to this question. I have a DateTime field that I was not setting. I made a console app that performed exactly the same actions on the context that my application was doing. In this case, SaveChanges() did return, with the exception 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.

    So I now set my DateTime field to 1/1/1900 and I'll treat that like a null date. My program now operates properly.

    Strange that I didn't get an exception thrown in my WPF application, but I did in the console application...