1

Foo という名前のエンティティ フレームワーク エンティティがあり、Foo に Bar というプロパティがあるとします。

Bar のセッターでエンティティ フレームワークのコンテキストにアクセスする方法はありますか?

public partial class Foo : IObjectWithChangeTracker
{
    public string Bar
    {
        get { /* ... */ }
        set
        {
            // How do I get the entity context here?
        }
    }

}
4

2 に答える 2

1

悪いですね。アプリケーションがどのように構成されているかはわかりませんが、クライアント側 (モデルへの参照が必要です) では、データ アクセス層 (サーバーにある) や System.Data への参照は必要ありません。したがって、アプリケーション構造全体を壊すことなく、EF コンテキストを参照するコードをそこに追加することはできません。

ある種の静的デリゲートをエンティティに追加することをお勧めします。たとえばAction<Foo> OnBarChanged、セッターでそれを呼び出してから、サーバー側で、いくつかの初期化コードで、その静的デリゲートを、実際にすべてにアクセスできるコードに設定します。必要。

于 2012-11-19T21:01:48.260 に答える
1

あなたの質問を正しく理解している場合、これを行うための私のアプローチはBar、データ コントラクトの下にないプロパティを追加し、他のオブジェクトを取得してBarsそこにプロパティを設定する別のメソッドを作成することです。しかし、HighCore が述べた理由により、私はあなたの質問を理解できないかもしれません。全体のアイデアは私には意味がありません。オブジェクトはコンテキストを所有していません。

if (context.OtherObjectTable != null)
        {
            var otherObj = (from obj
                           in context.OtherObjectTable
                           where obj.Name == "Name/key for obj"
                           select obj).FirstOrDefault(); // ensures we only get one back

主キーで検索している場合は、FirstOrDefault(). 複数の結果を取得できる場合は、別のループを作成し、反復処理を行いotherObj(現在はリストになっている可能性があります)、次の識別プロパティでフィルター処理します。そのループの後、次のような通常の割り当てを行うことができます

    Bar.Count = (int)otherObj.SomeInt32;
于 2012-11-19T20:46:05.783 に答える