Die Weitergabe von Entity-Kontext zu anderen Methoden und Objekte
Ich Frage mich, was ist der beste Weg, um pass Zusammenhang zwischen den Klassen. Soll ich mich mit den ref - parameter oder passen den Kontext als parameter? Vorzugsweise an den Konstruktor, aber im Fall einer statischen Methode, was ist der beste Ansatz? I. e. Leistung, Sicherheit, design, etc.. Gibt es einen Leistungseinbruch im Vorbeigehen den Kontext als parameter? Könnte möglicherweise Konflikte passieren, wenn verschiedene threads arbeiten auf den Rahmen zur gleichen Zeit bei der Verwendung von Referenzen?
Main.cs
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
}
}
- Es ist kein problem, oder Leistungseinbruch, wenn Sie pass-entity framework-Kontext als ein gewöhnlicher parameter. So stellen Sie sicher es ist schließlich Entsorgt.
- Die Kontext-Klasse ist nicht thread-sicher, so haben Sie Probleme erwarten, wenn Sie mit einem Kontext, in mehreren threads, egal, wenn Sie es passieren um mit oder ohne
ref
modifier. Sie haben, um sicherzustellen, thread-Sicherheit selbst durch manuelle thread-Synchronisierung (mitlock
usw.). Sie besser vermeiden Sie die Verwendung von einem Kontext in verschiedenen threads in Erster Linie, wenn Sie nicht wirklich brauchen es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
ref
ist völlig unnötig hier. Bei der übergabe um die Objekte, Sie sind eigentlich übergabe einer Kopie der Referenz (die sich selbst einen Wert geben, dass Punkte auf ein Objekt im heap). Mit derref
Stichwort, du bist vorbei an der "Referenz-Wert" durch einen Verweis (noch verwirrt?). Dies bedeutet, dass die Referenz könnte eigentlich geändert werden, außerhalb der Funktion, was nicht sehr praktisch in wirklich allen Umständen und ist nur eine Chance für seltsame Fehler.das ref-Schlüsselwort bedeutet, dass Sie auf der Durchreise sind die Zeiger verweisen, so ändern Sie den Wert der Variablen ändern, wird Sie für den Anrufer. AKA:
Aufruf:
In diesem Fall würden Sie nicht war, zu pass-by-reference. Denken Sie daran, dass die variable ein Zeiger auf das Objekt, also einfach vorbei, es wird nicht eine Kopie des Objekts, wie es in C++.