Загрузка статических данных из базы данных в приложении RIA - PullRequest
0 голосов
/ 19 октября 2011

Как часть приложения 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 голосов
/ 18 июня 2012

Я не стал бы беспокоиться о 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();
}
...