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
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
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
... google will nicht
Sorry, diese Einstellung dulden wir nicht.
Hallo macFish,
bevor du anfängst, DataSet
s und DataTable
s 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
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).
???
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