SQL CE 4 System.Transaction 支持

2023-12-20

有人问了类似的问题here https://stackoverflow.com/questions/3401796/does-sql-ce-4-ctp-support-ambient-transactions-using-system-transaction-namespa但没有得到答复。

我正在尝试将 System.Transactions.CommittableTransaction 与 EF CTP4 和 SQL CE 4 一起使用。

我为 ASP.NET MVC 控制器操作创建了以下事务属性:

public class TransactionAttribute : ActionFilterAttribute
{
    CommittableTransaction transaction;

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        transaction = new CommittableTransaction();
        Transaction.Current = transaction;
        base.OnActionExecuting(filterContext);
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {           
        base.OnResultExecuted(filterContext);

        try
        {
            var isValid = filterContext.Exception == null || filterContext.ExceptionHandled;
            if (filterContext.Controller.ViewData.ModelState.IsValid && isValid) {
                transaction.Commit();
            } else {
                transaction.Rollback();
                Transaction.Current = null;
            }
        }
        finally
        {
            transaction.Dispose();
        }
    }
}

当我使用此过滤器时,出现错误:

System.InvalidOperationException:连接对象无法登记在事务范围中。

但是,以下测试通过:

    [Test]
    public void Transaction_rolls_back_if_exception()
    {
        var transaction = new CommittableTransaction();
        Transaction.Current = transaction;

        try
        {
            var project = new Project { Title = "Test" };
            projectRepo.SaveOrUpdate(project);

            context.SaveChanges();

            var post = new Post { Title = "Some post" };
            blogRepo.SaveOrUpdate(post);

            throw new Exception();

            context.SaveChanges();

            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            Transaction.Current = null;
        }

        projectRepo.GetAll().Count().ShouldEqual(0);
        blogRepo.GetAll().Count().ShouldEqual(0);
    }

这与我初始化 DbContext 的方式有关吗?


我遇到了同样的问题。您不能将事务与 CE 连接一起使用。我最终让我的数据上下文管理我的 ce 连接并实现一个工作单元模式来保存我的操作,然后执行 SqlCeTransaction 内的所有计划操作,然后自己调用提交或回滚。

http://msdn.microsoft.com/en-us/library/csz1c3h7.aspx http://msdn.microsoft.com/en-us/library/csz1c3h7.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL CE 4 System.Transaction 支持 的相关文章

  • 实体框架 - 仅加载选定的属性

    我没有 EF 的实际经验 因此不知道这个问题的相关性 假设我有名为 Student 的表 StudentId Name Username Address DOB DeptId NavigationProp1Id 和 Department 表
  • Entity Framework 4 Code-First 多对多插入

    我在数据库层使用代码优先模式 我有两个 POCO 课程 public class Order Key public int OrderId get set public virtual ICollection
  • 为什么 TableAttribute 位于实体框架 Dll 中?

    Table 属性 可用于将 POCO 类映射到正确的数据库名称 架构 位于 EntityFramework dll 中是否有充分的理由 这是否会阻止您创建一个仅包含您的实体而不依赖于特定数据访问技术的域项目 例如 如果我使用此属性 我不相信
  • 如何更新实体?

    我之前有一个更详细的问题 但我没有答案 我将以更简单的方式提出同样的问题 I have an EF database with foreign key to another table 我想UPDATE an ENTITY 但我需要这样 我
  • 保存实体会导致重复插入到查找数据中

    我使用 EF 4 1 代码优先 来创建我的数据库和对象 Given public class Order public int Id get set public string Name get set public virtual Ord
  • 将 SQLCEResultSet 结果视图转换为数据表

    是否可以将 sqlceresultset resultview 转换为数据表 未经测试 但这应该可以满足您的需要 public DataTable ResultSetToDataTable SqlCeResultSet set DataTa
  • 实体框架可以在本地工作,但不能在 azure 上工作

    我有一个在本地完美运行的网络项目 但是 当我更改 Azure 上发布的网站中的连接字符串以连接到 SQL Azure 上的数据库时 它将开始出现此错误 System Data Entity Infrastructure Unintentio
  • 是否可以在 Lambda 表达式中包含 SqlFunctions.StringConvert?

    我一直在学习表达式并使用下面的代码添加针对数据库模型构建的表达式 EF4 ORACLE 而不是 SQL 这非常适合 Oracle 并允许我动态构建谓词 例如 CustomerId Contains 2 into f gt f Custome
  • EF4.1 多个嵌套实体 Includes 获取 NotSupportedException?

    编辑 根据测试更新了问题描述 2011 年 9 月 12 日 每当我调用 ToList 时 我的查询都会抛出 NotSupportedException 不支持指定的方法 IQueryable
  • SQL CE Compact 3.5 表的标识列

    是否有一个查询可以针对 INFORMATION SCHEMA 或针对系统表编写 以确定某个列是否是 SQL CE 版本 3 5 中的标识列 Use 列属性 供您参考 a 列属性 Transact SQL http technet micro
  • 使用 EF CPT5 进行域建模和映射

    我正在尝试制作一个包含照片集的相册的模型 每个相册都会有一组照片和一张拇指照片 这是我拥有的 但 EF 似乎不喜欢它 我正在使用 EF CPT5 该模型 public class Album IEntity private DateTime
  • 无法加载 SQL Server Compact 的本机组件

    我已经在 Win7 x64 上安装了 SQL Server Compact Edition 4 0 它可以运行于 Asp Net 和桌面应用程序 此 PC 还安装了 Visual Studio 2010 SP1 但是我的 Server 20
  • LINQ to Entities 区分大小写的比较

    这不是 LINQ to Entities 中区分大小写的比较 Thingies First t gt t Name ThingamaBob 如何使用 LINQ to Entities 实现区分大小写的比较 那是因为你正在使用LINQ 实体最
  • 查找导航属性的相关 FK 属性

    在运行时 我想查找 EntityObject 是否也具有给定 NavigationProperty 的外键属性 我在下面的两个步骤中做到了这一点 我想这将需要一些元数据查询 我不确定如何测试元数据类是否指向特定 EntityObject 类
  • 有没有办法在 SQL Server CE 中一次搜索所有表的字段?

    我希望在 WebMatrix C net 环境 使用 SQL Server Compact 中能够有一种方法来搜索所有表和字段中的值 我有一堆 比如 100 个 表 通过 WebMatrix 连接 我正在尝试寻找一个包含我需要的一些信息的表
  • 禁用实体框架的默认值生成(Code First)

    我数据库中有一个列不能为空 我想将其设置为默认值在数据库中 问题是实体框架似乎自己创建了一个默认值 例如 int gt 0 并且完全忽略了数据库中的默认值约束 有没有办法禁用实体框架的默认值 我发现您可以使用以下属性来装饰您的字段 Data
  • 帮助我了解实体框架 4 延迟加载的缓存

    我在实体框架 4 0 中遇到了一些意想不到的行为 我希望有人可以帮助我理解这一点 为了解决这个问题 我使用了 Northwind 数据库 我还使用默认的代码生成器 不是 poco 或自我跟踪 我希望每当我查询框架的上下文时 如果我尚未获取这
  • 为什么我们在实体框架中使用并发检查属性

    我是实体框架的新手 任何人都可以通过示例解释为什么我们在实体框架中使用并发检查属性 在场景中我们使用此属性 提前致谢 这是当多个用户同时更新实体时处理数据库更改冲突的一种方法 添加ConcurrencyCheck属性意味着你正在告诉 实体框
  • 实体框架代码优先:如何手动更新数据库?

    我构建了一个小型 WPF 演示应用程序 它使用 EF Code First 将其数据保存在 SQL CE 4 0 DB 中 除非我从模型对象中删除属性 否则它工作正常 例如 如果我从此类中删除 HosteBy public class Di
  • NHibernate QueryOver<> - SubQuery 上的聚合函数

    如何使用 QueryOver 语法编写以下 SQL 语句 SELECT COUNT FROM SELECT FirstName LastName FROM People GROUP BY FirstName LastName as sub

随机推荐

  • Android 如何在PrimaryClipChanged 上从剪贴板获取字符串?

    我正在尝试使用以下侦听器将文本复制到剪贴板中 import android content ClipboardManager OnPrimaryClipChangedListener import com orhanobut logger
  • 性能方面 MVC 比 ASP.NET 中的 Web 窗体更好吗

    我们将在 ASP NET 中开发一个网站 那么是使用 MVC 还是 Web 表单更好呢 这取决于您想要建立什么样的网站以及您创建网站的知识和经验 如果您了解自己的知识并且对自己 接近金属 工作的能力 事实上 充满信心 我想您可以使用 ASP
  • 如何在 HQL 中转义冒号?

    我的查询的条件部分如下 where foo bar like 查询将执行但没有结果 我认为这是因为冒号 因为它是 HQL 中的保留字符 那么我怎样才能在不发送的情况下逃脱它 作为我的查询的参数 我已经用过 and 没有成功 我找到了一个解决
  • Python:filter(函数,序列)和map(函数,序列)之间的区别

    我正在阅读 Python 文档 以真正深入了解 Python 语言 并遇到了过滤器和映射函数 我以前使用过过滤器 但从未使用过映射 尽管我在 SO 的各种 Python 问题中都看到过这两种情况 在阅读了 Python 教程中的相关内容后
  • 使用@Factory和@DataProvider进行TestNG

    我对 TestNG 和 Java 编程非常陌生 我对一起使用 Factory 和 DataProvider 有疑问 我想测试多次提交网络表单 每次使用不同的输入数据 我有以下代码 public class SolicitudEmpleo e
  • Chart.js:在饼图之外显示标签

    图表 js 2 6 0 我需要渲染一个如下所示的图表 始终显示所有工具提示不是可接受的方式 因为它们不会以正确的方式呈现 不幸的是我还没有找到解决方案 我已经尝试过件标签插件 但这有同样的问题 因为它的标签重叠 我无法隐藏某些标签 这是使用
  • 在 Rails 中保存和检索数组

    我正在 Rails 中开发电子学习 我想将一组数组保存到数据库中 目的是跟踪用户在电子学习各个部分的进度 我遇到过这个问题并回答 在数据库中存储数组 JSON 与序列化数组 https stackoverflow com questions
  • QQuickView - 无延迟/滞后地调整内容大小

    图像通常是解释某事的最简单方法 这是我遇到的问题的一个小屏幕截图 如果您查看窗口的右侧 您可以看到内容大小的调整有明显的滞后 延迟 这是一个在很多应用程序中都会发生的问题 但我想知道是否有办法在 Qt 应用程序中使用QQuickView和
  • 无法添加 gms play 服务 9.0.1,google-services 插件需要 9.0.0

    我的顶级 build gradle 中有这个 buildscript repositories jcenter dependencies classpath com google gms google services 3 0 0 allp
  • 从现有组件中创建自定义 Swing 组件

    所以 我有这个 JTexrtArea 几乎可以完美满足我的需求 唯一的问题是行距 我无法设置它 为什么不使用 JTextPane 因为 JTextArea 中的间距可以更改 而且 JTextArea 比 JTextPane 轻得多 而且我的
  • Play!Framework 中的批量 HTTP 请求

    我已经实施了当前的一组路线 例如 GET api version entity my controllers GET api version entity id my controllers POST api version entity
  • 调用/创建委托

    今天是个好日子 我注意到有两种方法可以调用 创建委托 MrDel MyDelegate new MrDel Mathmetics Method or MrDel MyDelegate Mathmetics Method 所以我的问题是这两种
  • 根据背景图像颜色自动对比文本颜色

    我正在寻找一种方法 根据名为 横幅 的 div 中背景图像的主颜色 将文本颜色更改为 000 或 fff 每个页面上的背景图像都是随机选择的 因此我需要能够自动执行此操作 我碰到JavaScript 颜色对比器 https stackove
  • NoReverseMatch django - 不是有效的视图函数或模式

    目前使用 Django 1 11 我得到一个例外 Reverse for book details not found book details is not a valid view function or pattern name Re
  • 按因子分组并返回其他列的第二低值

    我想按中的值对该数据框进行分组zipcode列 并在另一个 称为比率 列中返回second lowest率或lowest率或max rate 例如 从这个 df zipcode state county code name rate are
  • TypeScript 对数组进行排序

    我一直在试图找出我在打字稿中遇到的一个非常奇怪的问题 它将内联布尔表达式视为第一个值的类型 而不是完整的表达式 因此 如果您尝试如下简单的操作 var numericArray Array
  • 派生的 Scala 案例类与基类具有相同的成员变量

    有更好的方法吗 scala gt case class A x Int defined class A scala gt case class B override val x Int y Int extends A x defined c
  • 如何仅解析特定对象而不反序列化整个 JSON 文件?

    我有一个巨大的 JSON 文件 数万个对象 gt 100 MB 文件 我正在尝试解析以提取特定对象 由于文件太大 我尝试仅反序列化我需要的特定部分 如果可能的话 而不必反序列化整个文件 应根据特定属性的值找到所述对象 arena id xx
  • 在 Android Studio 中搜索整个项目中出现的所有字符串

    我刚刚开始使用 Android Studio IntelliJ 现在我正在寻找该功能来查找项目中任何文件中字符串的出现情况 例如 我想找到所有包含字符串 的文件 getUuid 右上角的搜索没有给我正确的结果 并且我认为我无法在 编辑 gt
  • SQL CE 4 System.Transaction 支持

    有人问了类似的问题here https stackoverflow com questions 3401796 does sql ce 4 ctp support ambient transactions using system tran