Because ObjectContext.SaveChanges()
occurs within a transaction I decided it would be best for my app to first perform all queries / updates on the ObjectContext
before calling SaveChanges()
once to write the data to the database.
However doing this means that if I create an object and subsquently query the ObjectContext
it denies it exists (presumbily because the database has yet to be updated). I assumed I could get around this with some of the SaveOptions but it doesn't look like I can.
I basically want the ObjectContext
to act like a proxy that I can modify as I wish to commit all in once go. Is there a way I can achieve this?
If you don't save changes your new objects don't exist in the database and no query executed against database (= no Linq to entities query) will return them. To get objects added to context but not saved yet you must query ObjectStateManager
:
var data = context.ObjectStateManager
.GetObjectStateEntries(EntityState.Added)
.Where(e => !e.IsRelationship)
.Select(e => e.Entity)
.OfType<YourEntityType>();