在RIA应用程序中从数据库加载静态数据

时间:2011-10-19 18:38:35

标签: wcf silverlight-4.0 ria domaindatasource

作为我正在创建的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的新手,所以如果这是米老鼠的话,请道歉。

谢谢!

1 个答案:

答案 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();
}