2011-10-19 54 views
0

作爲我創建的WCF RIA應用程序的一部分,我想在本地緩存一堆靜態支持數據(水系統,國家,省份列表;事情)。我創建了一個簡單的靜態類來將列表緩存到(LocalStateContainer.cs)中。在RIA應用程序中從數據庫加載靜態數據

例子:

public static class LocalStateContainer 
{ 
    private static IEnumerable _waterSystems; 

    public static IEnumerable WaterSystems 
    { 
     get 
     { 
      if (_waterSystems== null) 
      { 
       DomainDataSource ds = new DomainDataSource(); 
       Web.SuperDomainContext d = new Web.SuperDomainContext(); 
       ds.DomainContext = d; 
       ds.QueryName = "GetWaterSystems"; 
       ds.Load(); 

       _waterSystems = ds.Data; 
      } 
      return _waterSystems; 
     } 
    } 
} 

是審慎的做法以這種方式使用DomainDataSource?難道我不是很容易去:

public static class LocalStateContainer 
{ 
    private static IEnumerable _waterSystems; 

    public static IEnumerable WaterSystems 
    { 
     get 
     { 
      if (_waterSystems== null) 
      { 
       Web.SuperDomainContext d = new Web.SuperDomainContext(); 
       _waterSystems = from w in d.WaterSystems select w; 
      } 
      return _waterSystems; 
     } 
    } 
} 

更廣泛地說,如果是聰明的使用DomainDataSource檢索數據與直接訪問DomainContext?我認爲對於雙向連接而言,DomainDataSource是一種可行的方式,但是將靜態數據直接從DomainContext中取出是否有害/愚蠢?

任何洞察力是讚賞;如果這是米老鼠的東西,我對Silverlight仍然很陌生,所以很抱歉。

謝謝!

回答

0

我不會用DomainDataSource打擾這裏,只是在App.cs靜態myDomainContext您可以ping:

LoadOperation<my_entity> loadComplete = App.myDAL.Load(App.myDAL.Getmy_entityQuery()); 

,然後如果你在乎當它完成取知道:

loadComplete.Completed + = new EventHandler(loadChain_Completed);

void loadChain_Completed(object sender, EventArgs e) 
{ 
    //Stuff to do when data has been fetched, for example 
    return App.myDAL.my_entitys.ToList(); 
} 
相關問題