是否可以使用实体框架在 SQL Server CE 中实现 CommitMode.Immediate

Posted

技术标签:

【中文标题】是否可以使用实体框架在 SQL Server CE 中实现 CommitMode.Immediate【英文标题】:Is it possible to achieve CommitMode.Immediate in SQL Server CE using Entity Framework 【发布时间】:2016-10-12 07:21:03 【问题描述】:

是否可以使用实体框架调整 SQL Server Compact Edition 4.0 版连接参数,以便使用 CommitMode.Immediate 参数强制提交,如此处所述 https://***.com/a/7342721/5529867 或 https://***.com/a/8687410/5529867 ?

SQL Server CE 版本:4.0 实体框架: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); 
     

【讨论】:

谢谢。因此,我将调整 Flush-Interval 参数。 这不会强制立即刷新,我已经更新了我的回复 - 也可以在此处查看我的博客文章:erikej.blogspot.dk/2013/05/… 埃里克。我刚刚发现 EF 事务提交是没有参数的函数(所以 Commit,Immediate)不能被传递。我想知道 SQL CE 如何提交事务。它是立即提交还是推迟提交。 把msdn链接和我的博文代码结合起来,就可以使用commitmode.Immediate

以上是关于是否可以使用实体框架在 SQL Server CE 中实现 CommitMode.Immediate的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架打开受密码保护的 SQL Server CE 数据库

实体框架、ASP.NET 和 SQL Server CE

从 Edmx 构建的预编译实体框架 4 面向 SQL Server Safe 与 SQL CE 一起使用?

使用 SQL Server CE 4.0 的简单实体查询慢

从 SQL Server CE 切换到 SQL Server Express 实体问题

使用带有实体框架代码优先和 ASP.NET MVC 3 和 mvc miniprofiler 的 SQL Server CE 时出现问题