と を併用Code-First
してEntity Framework 5
いRepository 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つの解決策を考えました。
- コンテキストをパラメータとして拡張メソッドに渡します
ObjectMaterialized
イベントを使用して各エンティティにコンテキストを設定します
最初のアプローチはそれほど手間をかけずに機能しますが、これは良い習慣ではないと考えざるを得ません。
2 つ目は、各クラスに新しいプロパティを追加する作業以外に、それがパフォーマンスの問題になるのではないかと考えていました。これは過度の懸念ですか、それとも有効ですか?
この問題に対する他の解決策はありますか?