In welchen Szenarien möchte ich benutzerdefinierte Geschäftsobjekte von Linq to Sql Ergebnisse schaffen?

StackOverflow https://stackoverflow.com/questions/3570084

Frage

Ein einfaches LINQ to SQL-Abfrage kann ein Produkt-Objekt zurück. Obiously konnte ich diese Aufgabe zu meiner Business-Schicht übergeben, dann die Daten lesen und aktualisieren, direkt gegen das Objekt.

Ich habe eine Reihe von Implementierungen gesehen, wo im Anschluss an die Ausführung des Linq-Abfrage des resultierende Objekt abgebildet wird (über AutoMapper oder manuell) zu einem benutzerdefinierten Business-Objekt. So im Fall des Produkts, wo ich das Linq-Objekt haben könnte:

Product.ProductID und Wizard.productName

und dann würde ich ein eigenes Produkt Business-Objekt definiert wie folgt:

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

und einige einfache Mapping-Code wie:

BusinessProduct myProduct = new BusinessProduct (); myProduct.ProductId = Product.ProductID; myProduct.ProductName = wizard.productName;

und dann myProduct um meine Business-Schicht übergeben, ändern Sie es, es lesen und so weiter, dann später das Linq-Objekt aktualisieren.

In welchen Szenarien würde ich mag die benutzerdefinierten BusinessProduct Klasse erstellen?

War es hilfreich?

Lösung

IMHO, der allgemeine Grund zu entkoppeln / disentangle Ihren Business-Entities aus dem Linq2SQL ORM Gepäck, das mit Linq2SQL Entities kommt

Doch in einem extremen Szenario können Sie mehrere Zuordnungen haben:

  • Linq2SQL Einheiten für die "Data Access" Layer - aber diese sind eng gekoppelt an die L2S Datacontext
  • POCOs / Wirtschaftseinheiten würden für Geschäftsregel-Anwendung verwendet werden, Validierung usw.
  • Wenn Sie Web-Services oder WCF verwenden, können Sie die Daten auch als Nachrichten Entities repräsentieren z wenn Sie die Einheiten in einem ganz bestimmten Format präsentieren müssen, wenn sie über den Draht serialisiert
  • Und schließlich, wenn Sie eine MVC / MVP / MVVM UI-Architektur haben, könnten Sie Einheiten für Ihre Ansichten zugeschnitten wollen

Andere Tipps

In meiner Anwendung, mache ich eine Linq-Abfrage, die sechs verschiedene Tabellen verknüpft und liefert ein paar Spalten von jedem. Es gibt keinen tabellenspezifische Objekttyp, die diesen Satz von Informationen übereinstimmt. Ich schaffe daher eine benutzerdefinierte Business-Klasse den Datensatz zu behandeln.

Sie können es selbst sehen (unter http://www.njtheater.org )

ich wählen Sie aus der Tabelle Productions by Date. Es schließt sich an den Spieltisch (wo ich den Titel und Beschreibung bekommen), die Troupes Tabelle (wo ich die Theater Firmennamen erhalten), der Veranstaltungsorte Tisch (wo ich das Theater Namen & City bekommen). Die Spiele Tabelle schließt sich an die PlayCredits Tabelle, die die Tabelle Personen verbindet (wo ich die Dramatiker Namen bekommen)

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