2016-10-12 4 views
0

Можно ли настроить параметры соединения SQL Server Compact Edition версии 4.0 с помощью Entity Framework, чтобы принудительно зафиксировать CommitMode.Immediate, как указано здесь https://stackoverflow.com/a/7342721/5529867 или https://stackoverflow.com/a/8687410/5529867?Возможно ли достичь CommitMode.Immediate в SQL Server CE с использованием Entity Framework

  • SQL Server CE версии: 4,0
  • EntityFramework: 6.1.3
  • EntityFramework.SQLServerCompact: 6.1.3

ответ

1

Нет, это возможно только с помощью сырого ADO.NET (или вас контролирующее DbTransaction, возможно с 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);  
    } 
} 
+0

Благодарю вас. Таким образом, я настрою параметр Flush-Interval. – iljon

+0

Это не приведет к немедленному флешу, я обновил свой ответ - также см. Мой блог здесь: http://erikej.blogspot.dk/2013/05/sql-server-compact-code-snippet-of-week_21. html – ErikEJ

+0

Erik. Я только что обнаружил, что транзакция транзакции EF является функцией без параметров (поэтому Commit, Immediate) не может быть передана. Мне интересно, как SQL CE совершает транзакцию. Делает ли это немедленно или отсрочка. – iljon

 Смежные вопросы

  • Нет связанных вопросов^_^