【发布时间】:2016-05-02 08:45:39
【问题描述】:
我有一个使用 ASP.NET MVC 4 开发的 Worker Role,它在 Azure 中实现了一个 REST WS。它使用 Entity Framework v6 连接到 Azure SQL DDBB。通常它工作正常,但有时我在尝试使用此消息写入 DDBB 时会遇到异常:
提交数据库事务时报告了一个错误,但它 无法确定交易是成功还是失败 数据库服务器
错误似乎是应用服务器和 DDBB 之间的连接问题。我已经实现了 SQLAzureExcutionStrategy(解释为 here)来获得连接弹性,但这并不能防止错误,因为连接问题似乎在提交期间发生,所以 EF 不知道是否必须重试或不是。
有一个解决方案解释了here,它建议创建一个“跟踪检查表”以便在每个事务中插入一个“跟踪行”,如果发生临时异常(如我的)然后检查该行是否存在或不在表中决定是否撤消。但是我不确定这种方法在使用像 EF 这样的 ORM 时是否有效。
当我执行 DbContext.SaveChanges() 并且在事务期间发生连接问题时。 ¿ 我可以假设全部或全部都没有提交吗?如果不是,我应该采用哪种策略?尝试在每次实体更新时执行 SaveChanges?
提前感谢您提供的任何帮助。
问候, 伊万。
【问题讨论】:
-
我终于得到了微软的答复。我还没有测试过,但看起来可行:msdn.microsoft.com/en-us/data/dn630221
标签: azure entity-framework-6 azure-sql-database azure-worker-roles transient