3
我在Silverlight應用程序中使用EF4/RIA組合。每個RIA查詢是否創建一個不同的EF對象上下文?
我在我的DomainService
中有多種服務方法。
其中一種方法從數據庫中提取某些數據,並然後修改的對象值:
IEnumerable<Factor> GetModifiedFactors(double threshold)
{
List<Factor> factors = ObjectContext.Where(f => f.Id == selectedId).ToList();
for(int i = 1; i < factors.Count; i++)
{
Factor current = factors[i];
Factor previous = factors[i - 1];
// Note that here the value of the entity object has been changed
current.Value = 2 * current.Value - 3 * previous.Value;
}
return factors.Where(f => f.Value > threshold);
}
這些計算的值然後被返回給應用SL。
請注意,在本例中實體對象的值已被更改。
我有另一項服務方法,它改變一些數據,然後調用.SaveChanges()
。
[Invoke]
public void ResetFactor(int factorId, double defaultValue)
{
Factor factor = ObjectContext.Factors.FirstOrDefault(f => f.Id == factorId);
if(factor == null)
return;
factor.Value = defaultValue;
ObjectContext.SaveChanges();
}
問:
我想知道的是這個調用SaveChanges
第二服務方法是否會影響通話作出了第一個服務方法的變化?
還是每個RIA查詢/服務調用創建一個新的EF ObjectContext?
我編輯了我的問題以包含更好的示例。我需要知道的是ResetFactor方法中的SaveChanges是否會保存之前調用GetModifiedFactors()所做的更改?這基本上是詢問ObjectContext實例是否保存在不同的域服務調用中? –
答案仍然相同,「是」,來自客戶端的每個方法調用實際上是一個單獨的請求,並且每個請求都與新的ObjectContext分離地執行,因此這些更改將正確地反映在數據庫中。 –