Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
(Logic, Data, Presentations Layer), wo bring ich mein O/R Mapping unter ??
macFish
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

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

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
macFish
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

beantworten | zitieren | melden

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

Moderationshinweis von herbivore (29.12.2011 - 10:45:53):

Zitat
... google will nicht
Sorry, diese Einstellung dulden wir nicht.

private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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.

Zitat von macFish
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
private Nachricht | Beiträge des Benutzers
macFish
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

beantworten | zitieren | melden

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).

???
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers