ria服务如何管理交易

TCM*_*TCM 2 silverlight silverlight-3.0 silverlight-4.0 wcf-ria-services

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

someContext.Add(someEntity1);
someContext.Add(someEntity2);
someContext.Add(someEntity3);
Run Code Online (Sandbox Code Playgroud)

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

Ed *_*pel 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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