I have a memory-optimized table in SQL Server 2017 called "User".
I'm going to update a row as:
using (var context = new MyDbEntities()) { var user = context.Users.Single(p => p.UserId == 1); user.Name = "John"; context.SaveChanges(); }
At SaveChanges() statement, this exception appears:
Accessing memory optimized tables using the READ COMMITTED isolation level is supported only for autocommit transactions. It is not supported for explicit or implicit transactions. Provide a supported isolation level for the memory optimized table using a table hint, such as WITH (SNAPSHOT).
I've tried changing some options on my db, like:
alter database MyDb set ALLOW_SNAPSHOT_ISOLATION ON
Also using transaction with Snapshot isolation in my code, but nothing achieved.
Entity Framework wraps the SaveChanges() call in a transaction for you, with isolation level of the transaction by default (for SQL Server) READ COMMITTED.
You can wrap your Entity Framework code in a transaction yourself, for example:
See the documentation: https://msdn.microsoft.com/en-us/library/dn456843(v=vs.113).aspx