Загрузка статических данных из базы данных в приложении 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();
}