Search code examples
c#entity-frameworksql-server-ce

Is it possible to achieve CommitMode.Immediate in SQL Server CE using Entity Framework


Is it possible to adjust SQL Server Compact Edition version 4.0 connection parameters using Entity Framework in order to force Commit with a CommitMode.Immediate parameter as stated here https://stackoverflow.com/a/7342721/5529867 or https://stackoverflow.com/a/8687410/5529867 ?

  • SQL Server CE version: 4.0
  • EntityFramework: 6.1.3
  • EntityFramework.SQLServerCompact: 6.1.3

Solution

  • No, this is only possible via raw ADO.NET (or you controlling the DbTransaction, possible with EF6 - https://msdn.microsoft.com/en-us/data/dn456843.aspx#existing )

     using (SqlCeConnection conn =
        new SqlCeConnection(@"Data Source=C:\data\AdventureWorks.sdf;"))
     {
         conn.Open();
         using (SqlCeTransaction tx = conn.BeginTransaction(IsolationLevel.ReadCommitted))
         {
             using (var context =  new BloggingContext(conn, contextOwnsConnection: false)) 
             { 
                context.Database.UseTransaction(tx); 
                var query =  context.Posts.Where(p => p.Blog.Rating >= 5); 
                foreach (var post in query) 
                { 
                   post.Title += "[Cool Blog]"; 
                } 
                context.SaveChanges(); 
            }
            tx.Commit(CommitMode.Immediate); 
         }
    }