2016-10-12 5 views
0

Entity Frameworkを使用してSQL Server Compact Editionバージョン4.0の接続パラメータを調整して、ここに記載されているCommitMode.Immediateパラメータを使用してCommitを強制できますか?またはhttps://stackoverflow.com/a/7342721/5529867https://stackoverflow.com/a/8687410/5529867Entity Frameworkを使用してSQL Server CEでCommitMode.Immediateを実現することは可能ですか

  • 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トランザクションコミットがパラメータなしの関数であることを発見しました(コミット、即時)ので、渡すことはできません。私はSQL CEがどのようにトランザクションをコミットするのだろうかと思います。それは即座にコミットするか延期しますか? – iljon

関連する問題