クラス間でコンテキストを渡す最も良い方法は何ですか? refパラメータを使用するか、コンテキストをパラメータとして渡すだけですか?好ましくはコンストラクタにするが、静的メソッドの場合には最良のアプローチは何か?私。パフォーマンス、安全性、デザインなどを考慮する必要があります。参照を使用するときに同時に異なるスレッドがコンテキスト上で動作していると、競合が発生する可能性がありますか? REFキーワードは、あなたがそう変更、参照することにより、ポインタを渡していることを意味他のメソッドとオブジェクトへのエンティティコンテキストの受け渡し
static void Main(string[] args)
{
var context = new MyEntities();
var myClass = new MyClass(context);
myClass.AddPerson();
// or
Person.AddPerson(ref context);
}
MyClass.cs
public class MyClass
{
public void MyClass(MyEntities context) { }
public void AddPerson()
{
context.People.AddObject(new Person());
}
}
MySecondClass.cs
public partial class Person
{
public static AddPerson(ref MyEntities context)
{
// Do something
}
}
エンティティフレームワークのコンテキストを通常のパラメータとして渡すときに問題やパフォーマンスに問題はありません。最後にDisposedされていることを確認してください。 – Andrei
コンテキストクラスはスレッドセーフではないので、複数のスレッドでコンテキストを使用している場合は、 'ref'修飾子の有無にかかわらず問題を予期しなければなりません。手動スレッド同期( 'lock'などを使用)によって、スレッドの安全性を確保する必要があります。あなたが本当にそれを必要としない場合は、最初に別のスレッドでコンテキストを使用することを避けることをお勧めします。 – Slauma