是否可以使用实体框架在 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 数据库
从 Edmx 构建的预编译实体框架 4 面向 SQL Server Safe 与 SQL CE 一起使用?
从 SQL Server CE 切换到 SQL Server Express 实体问题
使用带有实体框架代码优先和 ASP.NET MVC 3 和 mvc miniprofiler 的 SQL Server CE 时出现问题