Laden...

(Logic, Data, Presentations Layer), wo bring ich mein O/R Mapping unter ??

Erstellt von macFish vor 12 Jahren Letzter Beitrag vor 12 Jahren 891 Views
Thema geschlossen
M
macFish Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren
(Logic, Data, Presentations Layer), wo bring ich mein O/R Mapping unter ??

Hallo,

Mein VS Solution hat folgenden Aufbau :

Folgende Projekte sehen folgende Projekte (wie es sich gehört...)
GUI > LOGIC
LOGIC > DATA

Jetzt habe ich Klassen die in GUI, LOGIC, DATA sichtbar sein müssen.
Diese habe ich in einen Structure Projekt untergebracht.

GUI > STRUCTURE
LOGIC > STRUCTURE
DATA > STRUCTURE

Es werden Aktienkurse aus dem Internet runtergeladen und sollen dann in eine Datenbank gespeichert werden. Jetzt wollte ich in Structure.Simplestock eine Save Funktion machen um die Daten in die Datenbank zu speichern. Dann ergibt meine aufbau aber keinen sinn mehr da DATA auf die Datenbank zugreifen sollte.

    public class SimpleStock
    {
        public DateTime Date { get; set; }
        public decimal Open { get; set; }
        public decimal Close { get; set; }
        public decimal AdjClose { get; set; }
        public decimal High { get; set; }
        public decimal Low { get; set; }
        public decimal Volume { get; set; }
    }

Helft mir mal bitte.

MFG MCFISH

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo macFish,

herzlich Willkommen auf myCSharp.de!

O/R-Mapping ist von der Datenbanktechnologie abhängig und gehört daher in die Datenzugriffsschicht. Höhere Schichten verwenden die Domain-Objekte, wie bei dir SimpleStock, ohne zu wissen, wie diese mit Werten befüllt werden. Ob das über O/R-Mapping, manuelles Mapping oder über einen anderen Mechanismus passiert, ist dabei egal — Stichwort Separation of concerns.

Dein Projekt Structure – oder geläufiger: Model – sollte lediglich die Domain-Objekte enthalten. Funktionen wie Save(), die ein SimpleStock-Objekt persistieren, gehören in ein Repository in die Datenzugriffsschicht. Auf diese Repositories kann dann im Business-Layer (in deinem Falle: Logic) über Service-Klassen zugegriffen werden. Worin die Vorteile in dieser Vorgehensweise liegen, erkläre ich in Business und Persistence Methoden wie implementieren? (Aufteilung Business/Service/DAO/NHibernate).

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

M
macFish Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren

Hallo m0rius,
danke erstmal für die Antwort.

ich möchte manuell Mappen, da der O/R Mapper vom Framework zu viel Code generiert und ich in NHibernate nicht eingelesen bin. Irgenwie nervt mich das auch ein wenig das ich soviel Aufwand betreiben muss um Objekte dauerhaft zu speichern.

Noch einpaar fragen:
Domain-Objekt = Hauptobjekte auf die von mehreren Projekten verwiesen wird ?
Service-Klassen = z.B ist die Klasse auf den ich auf meinen SQL Server zugreife ?

Wieso nicht wie hier beschrieben ? (Bis zum Code scrollen)
Codeproject : Domain Object Persistence

Was ist eine Repositories ? Hab das schon mal gehört aber völlig vergessen was das zu bedeuten hat und google will nicht.

MFG macFish

Hinweis von herbivore vor 12 Jahren

... google will nicht

Sorry, diese Einstellung dulden wir nicht.

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo macFish,

bevor du anfängst, DataSets und DataTables zu verwenden und manuell zu mappen, würde ich mich an deiner Stelle vorher mit (Fluent)NHibernate beschäftigen — so aufwändig ist das Mapping damit nämlich nicht.
Wenn du das Entity Framework verwenden willst, wäre der Code First Ansatz für dich vermutlich eine gute Wahl.

Domain-Objekte sind die Model-Klassen im Model-Projekt (oder Structure, wie es bei dir heißt).

Hast du dir den Thread durchgelesen, den ich gepostet habe? Vermutlich nicht, denn darin wird ersichtlich, was ich mit Repositories und Services meine.

Was ist eine Repositories ? Hab das schon mal gehört aber völlig vergessen was das zu bedeuten hat und google will nicht.

Sorry, aber darauf antworten will ich wiederum nicht. Siehe [Hinweis] Wie poste ich richtig? (Punkt 1.1).

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

M
macFish Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren

ich bin es schon wieder,

ich mochte auf nur mal sicher gehen...

in mein Data Layer kommt die Repository Klasse mit den nötigsten Methoden.
in mein Logic Layer kommt die Service Klasse(z.B SimplestockService) mit zusätzlichen Spielereien(Methoden).

???

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo macFish,

genau, in die Repository-Klasse kommen datenbankspezifische Lese-, Speicher- und Lösch-Funktionen.
In die Service-Klassen kommen weitere Abfragemethoden, die Anwendungslogik erhalten und auf den Repository-Methoden aufbauen. (Das heißt aber nicht, dass hier alles landet, was nicht ins Repository gehört!

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Thema geschlossen