0

作为我正在创建的 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 更聪明?我想 2-way 链接 DomainDataSource 是要走的路,但是直接从 DomainContext 中提取静态数据是否有害/愚蠢?

任何见解都值得赞赏;我对 Silverlight 还是很陌生,所以如果这是米老鼠的东西,我很抱歉。

谢谢!

4

1 回答 1

0

我不会在这里为 DomainDataSource 烦恼,只需在 App.cs 中有一个静态的 myDomainContext 即可:

 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();
}
于 2012-06-18T15:02:35.880 回答