2

我學會了如何使用TransactionScope在另一個我的問題中配置實體框架中的交易。但它仍然讓我困惑!我的意思是RIA服務如何執行交易,我們如何指定交易選項?我的意思是,假設在Silverlight客戶端上,我們指定是這樣的: -ria服務如何管理交易

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

現在,當我打電話someContext.SubmitChanges()這是要調用服務器上的InsertSomeEntity()在我的域服務類。什麼是保證所有三條記錄都會被插入到數據庫中,如果一個都失敗了,所有這些記錄都會失敗?我們如何改變這些選擇?

+1

希望這會有所幫助http://bit.ly/fbwR85 – Hukam 2011-03-26 14:13:18

+0

您還需要考慮併發性問題。 WCF RIA讓你的生活變得有趣。閱讀的起點是http://sklementiev.blogspot.com/2010/03/wcf-ria-and-concurrency.html。代碼有點舊,不再適用,但是可以通過一種方法閱讀。 – Rus 2011-03-26 14:31:54

回答

5

Chand的鏈接就是一個很好的例子。 WCF RIA將爲SubmitChanges提交ChangeSet,其中包含所有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個請求。