ria服务如何管理交易

时间:2011-03-26 13:36:27

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

我学会了如何在我的另一个问题中使用TransactionScope在Entity Framework中配置事务。但它仍然让我感到困惑!我的意思是RIA服务如何执行交易以及我们如何指定交易选项?我的意思是,假设在Silverlight的客户端上我们指定了这样的东西: -

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

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

1 个答案:

答案 0 :(得分:5)

Chand的链接就是一个很好的例子。 WCF RIA将为SubmitChanges提交一个包含所有3个Add的变更集。在您的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个请求。