Загрузка статических данных из базы данных в приложении RIA

Как часть создаваемого мной приложения 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 ответ

Я не стал бы беспокоиться о DomainDataSource здесь, просто у меня есть статический myDomainContext в App.cs, который вы можете пропинговать:

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

И затем, если вы хотите знать, когда это будет сделано:

loadComplete.Completed + = новый 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();
}
Другие вопросы по тегам