Frage

Conery die Schaufenster überprüfen, und ich verstehe nicht, warum er Linqs automatisch generierten Klassen verwendet (dh Order-Klasse), und dann hat er eine weitere Order-Klasse definiert, dass keine Teil-Klasse. Bei der Verwendung von Repository-Muster sollte man manuell die Klassen erstellen, und ignorieren Datacontext zusammen?

War es hilfreich?

Lösung

Wenn Sie nicht Ihr Front-End von den Linq Klassen entkoppeln eine Zwischenklasse verwenden, können Sie nicht mit dem Datenkontext steuern wird Müll gesammelt. Typischerweise mit Datenkontext Arten von Instanzen wollen Sie so bald von ihnen zu befreien, wie Sie sie verwenden sind fertig. Hier ist, wie Sie könnte dies tun möchte, mit dem LINQ to SQL-Kontext:

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    return thing;
}
... the MyDataContext instance is gone

Mit dem „mit“ Block, Sie Entsorgen der Instanz von MyDataContext in dem letzten „}“. wenn Sie dies jedoch tun, erhalten Sie eine Fehlermeldung erhalten, dann zu verwenden versuchen, „Ding“, da die Datenkontextinstanz ist weg. Wenn Sie nicht des Datenkontext verfügen, wird es links herum hängen, bis sie gesammelt schließlich Müll ist.

Wenn Sie einführen ein Zwischenklasse die LINQ to SQL-Code von der rufenden Anwendung entkoppeln können Sie immer noch Ihre Daten Kontextinstanz loszuwerden und die gleichen Daten zurück (nur in einem anderen Objekt):

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
    return otherThing;
}
... the MyDataContext instance is gone

Ich hoffe, das hilft.

Andere Tipps

Rob hat auf diese Frage in einem seiner Show beantwortet.

Er POCO-Klassen aus allen Datenzugriffs-Klassen zu beachten. Zum Beispiel, wenn er sich ändern LINQ to SQL zu NHibernate alle müssen er tun ändern i seine „Mappings“ in seinen Filter, und er wird in bussiness Logik keine Änderungen vornehmen müssen.

, sagte er in einem seiner letzten Videos er nicht die Art und Weise LINQ mag auf SQL-Zuordnung der Fall ist. Ich bin damit einverstanden, obwohl ich denke, es ist komplett übertrieben.

Ich würde sagen, Sie sind keine größeren Entwurfsmuster so lange zu brechen, wie Sie in das Repository-Muster abgelegt haben selbst. Ich denke, es ist eine Frage der Wahl 2 Sätze classesa zu haben, allbeit eine schlechter, noch eine Wahl.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top