1

DomainService クラスのオーバーロードを作成しました。問題は、再コンパイルすると、DomainContext のオーバーロードとして表示されないことです。どうしたの?コードサンプルは次のとおりです。

[EnableClientAccess]
public class FoodDomainService : LinqToEntitiesDomainService<FoodEntities>
{
    public FoodDomainService(CultureInfo cultureInfo)
    {
        Thread.CurrentThread.CurrentCulture = cultureInfo;
    }
}

そして、これは機能しません:

FoodDomainContext _foodContext = new FoodDomainContext(Thread.CurrentThread.CurrentCulture);

それに一致するオーバーロードがないというエラーが表示されます。これを行うことは許可されていませんか? 何らかの属性が必要ですか?

4

2 に答える 2

1

これを行うことは許可されていません。Silverlight クライアントからコンテキストを新しくする場合、サービスを直接インスタンス化することはありません。代わりに、RIA サービスによって生成されたプロキシ クラスをインスタンス化し、そのプロキシ クラスがサービスを呼び出します。これが、コンストラクターが表示されない理由です。RIA がプロキシーでコンストラクターを生成しなかったためです。

あなたがやろうとしていることをすることは、そのFoodDomainContextクラスを新しくするときにサーバーへのラウンドトリップがあることも意味しますが、それは起こらないでしょう。そうする。

とにかく、代わりに SetCurrentCulture() というメソッドを作成し、プロキシを初期化した後に呼び出すことができます。

于 2011-04-12T04:22:22.783 に答える
0

DomainContext は Silverlight のクライアント コードで生成されるため、これは機能しません。[すべてのフォルダーを表示] をクリックするか、定義にジャンプすると、生成されたコードに余分なコンストラクターが含まれていないことがわかります。

代わりに、ドメイン サービスでメソッドを作成し、情報をサーバーに渡す必要があります。

public SetCultreInfo(int lang,...)
{
   ..  set culture info
}

クライアントでは、コンストラクター内で呼び出す必要があります。

public MyDomainContext()
{
    this.SetCulture(....);
}
于 2011-04-12T04:21:50.333 に答える