0

私が作成しているWCFRIAアプリケーションの一部として、静的なサポートデータの束をローカルにキャッシュしたいと思います(水道システム、国、州などのリスト)。単純な静的クラスを作成しました。リストを(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;
        }
    }
}

より広義には、DomainContextに直接アクセスするのではなく、DomainDataSourceを使用してデータを取得するのが賢明なのはいつですか。DomainDataSourceを双方向にリンクするのが道のりだと思いますが、静的データをDomainContextから直接ヤンクするのは有害/愚かですか?

どんな洞察もありがたいです。私はまだSilverlightを初めて使用するので、これがミッキーマウスのものである場合はお詫びします。

ありがとう!

4

1 に答える 1

0

ここでは DomainDataSource を気にしません。App.cs に ping できる静的な 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 に答える