【问题标题】:How ria services manage transactionsria 服务如何管理事务
【发布时间】:2011-03-26 13:36:26
【问题描述】:

在我的另一个问题中,我了解了如何使用 TransactionScope 在实体框架中配置事务。然而它仍然让我感到困惑!我的意思是 RIA 服务如何执行事务以及我们如何指定事务选项?我的意思是,假设在 Silverlight 的客户端上我们指定这样的内容:-

someContext.Add(someEntity1);
someContext.Add(someEntity2);
someContext.Add(someEntity3);

现在当我调用someContext.SubmitChanges() 时,这将在我的域服务类的服务器上调用InsertSomeEntity()。什么是所有三条记录都将被插入数据库的保证,如果一条失败,它们都失败了?我们如何更改这些选项?

【问题讨论】:

标签: silverlight silverlight-4.0 silverlight-3.0 wcf-ria-services


【解决方案1】:

Chand 的链接有一个很好的例子。 WCF RIA 将为包含所有 3 个 Add 的 SubmitChanges 提交一个 ChangeSet。在您的 DomainService 中,您可以重写 PersistChanges 方法来完成事务。

public class SomeEntityDomainService : DomainService
{
    SomeEFContext _someEFContext;
    public SomeEntityDomainService()
    {
        _someEFContext = new SomeEFContext();
    }

    public void InsertSomeEntity(SomeEntity someEntity)
    {
        // Called 3 times in your example
        _someEFContext.SomeEntities.Add(someEntity);
    }

    protected override bool PersistChangeSet()
    {
        // Called exactly once per SubmitChanges() in Silverlight
        _someEFContext.SaveChanges();
    }
}

所有这些都发生在从客户端到服务器的一个请求中,而不是 3 个请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多