作为我正在创建的WCF RIA应用程序的一部分,我想在本地缓存一堆静态支持数据(水系统,国家,省份列表;那种事情。)我创建了一个简单的用于将列表缓存到(LocalStateContainer.cs)的静态类。
示例:
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 :(得分: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();
}