0

と を併用Code-FirstしてEntity Framework 5Repository Patternます。

プロパティからアクセスできない他のエンティティにアクセスするには、一部の拡張メソッド内からコンテキストを取得する必要があります。

例:

public static class MyClassExtensions
{
    public static void DoSomething(this MyClass mClass)
    {
        // This is what I want to do
        // GetContextSomeWay() is what I need
        // GetRepository is method from my context
        mClass.GetContextSomeWay().GetRepository<SomeRepository>().Where(...);
    }
}

public class MyService
{
    public void DoSomethingOnService(int id)
    {
        MyContext ctx = new MyContext();
        MyClass cl = ctx.GetRepository<MyClass>().Single(c => c.Id == id);
        cl.DoSomething();
    }
}

2つの解決策を考えました。

  1. コンテキストをパラメータとして拡張メソッドに渡します
  2. ObjectMaterializedイベントを使用して各エンティティにコンテキストを設定します

最初のアプローチはそれほど手間をかけずに機能しますが、これは良い習慣ではないと考えざるを得ません。

2 つ目は、各クラスに新しいプロパティを追加する作業以外に、それがパフォーマンスの問題になるのではないかと考えていました。これは過度の懸念ですか、それとも有効ですか?

この問題に対する他の解決策はありますか?

4

1 に答える 1

1

Unity を追加し、そこにリポジトリを配置することで解決できます。せいぜい構成ルートに、必要なものが存在するコンテナがあるだけです。

その後、Unity コンテナーを介してそれらにアクセスできます。

必要なテクニックを示す非常に優れたチュートリアルがあります: Jason Dollinger on MVVM。主にMVVMについてですが、unityの使い方も示しています。

ソースコードはここから入手できます: MVVM Demo client source code

これらについての詳細は次のとおりです。

団結

構成ルート

于 2013-01-31T17:18:25.533 に答える