Laden...

Fragen zu Retina

Letzter Beitrag vor 17 Jahren 42 Posts 13.178 Views
Fragen zu Retina

(alle von Retina unterstützten Datenbanksysteme)

Hallo,

Gibt es irgendwo gute Tutorials für Retina.NET? Oder ist es mittlerweile veraltet (auf der Website sind die letzten "News" von 2005 und im Internet findet sich nix), sind da andere schon leistungsfähiger (z.B. NHibernate)?

Danke schon mal im voraus

Über Tutorials kann ich dir nichts sagen, aber ich kann dir sagen das dass Projekt von gotdotnet.com auf codeplex umgezogen ist. Dort wird auch gerade daran gearbeitet die Informationen auf der Seite zu Verfügung zu stellen.

Aber was interessiert dich/euch denn?

Ich werde wohl ab nächste woche dazu kommen meine Retina.NET
Implementierung ( FW 2.0 ) aufzuräumen und dann auch mal ein Tutorial,
und eine kleine Demo zu machen.

Wenn es da spezielle Sachen gibt, kann ich das ja mit einfliessen lassen.

@FZelle:
Du hattest ja schon mal ein Beispiel gepostet, wo du eine Datenstruktur für Retina aufgearbeitet hast, was ich ziemlich einleuchtend fand, aber so die Art und Weise wie man etwas komplexere Abfragen als ein 'hole mir das Objekt mit dem angegebenen Schlüssel' mit Retina macht, das erschließt sich mir nicht.

Das nächste Problem ist, dass ich gerne Wissen möchte, was Retina kann, unterstützt es Vererbung von Entitys, usw.

Vor allem, hab ich aber die Frage gestellt, weil mir immer unwohl dabei ist, mir Funktionen damit anzueignen, den Quellcode zu reflektieren und mir zu überlegen, das müsste so sein. Gerade bei sowas komplexem wie Retina find ich das schon ziemlich schwer...

Ist nicht wirklich Komplex 😉

Ja, Vererbung wird unterstützt.

Komplexere Abfragen kannst Du entweder per Criteria zusammenstellen, oder
per Criteria.Parse(..) als String Parsen lassen.

Master Detail geht per ChildStorageAttribute usw.

Ich werde mal nächste Woche eine Beispielanwendung mit Retina.NET und CAB machen.

Was wäre denn mal ein gutes einfaches Beispiel, mit 2-3 Tabellen, das man damit aufbauen könnte?
Das stelle ich dann als Tutorial hier rein.

Das wäre wahrscheinlich ein Anfang. Naja... Auch ich wollte mich in Retina.NET einarbeiten. (Habe es heute heruntergeladen)

Gibt es eine Möglichtkeit eine ODBC Schnittstelle anzusprechen? Wie funktioniert das?

Ich kenne das von anderen OR Mappern, dass die Klassen und Objekte von einer bestehenden Datenbank automatisch erstellt werden. Ist das bei Retina.NET auch so?

ODBC Nein, ist kein std. "Treiber" implementiert.
Wozu auch, welche DB willst Du ansprechen?

Und nein, automatisch wird hier auch nichts erstellt, genausowenig wie bei
NHibernate und co, wo Du dafür auch Codegeneratoren benötigst.

Gehe ich richtig in der Annahme, dass Retina nur die Felder mappt (wird wahrscheinlich mit Reflection arbeiten, deshalb wird der Zugriffsmodifizierer egal sein), die mit den entsprechenden Attributen ausgestattet sind?

Ich würde gerne folgende Datenbank ansprechen:

Sybase Adaptive Server Anywhere Database

@onlinegurke:
richtig

@burning snow:
XPO hat da einen treiber für 😉

Aber das erstellen eines eigenen Treibers für Retine ist auch nicht schwer, ich
selber habe einen für Firebird, SQLite und MSSQLCompact geschrieben.
War nicht wirklich schwierig.

Wie kann man ForeignKeys erstellen, ich hab jetzt das ForeignKeyAttribute gefunden und ich denk mir, es wird wohl darüber gehn 🙂, aber wie? Was ist dann ChildField und was ParentField? Die Referenz für einen ForeignKey sollte doch für gewöhnlich in einer anderen Tabelle sein...

ForainKeys erstellst Du in der DB 😉


[ChildStorage(ChildType = typeof(ChildTable), 
                     IsReference = true, 
                     AllowNull = true, 
                     LazyLoad = LazyLoadMode.On, 
                     LazyLoadUsingProxy = false)]
[ForeignKey(ParentFieldName = "ID", ChildFieldName = "ParentID")]
public ChildCollection<ChildTable> ChildTableCollection;

Wie muss ChildTableCollection dann aussehen? Ich vermute mal, es muss ICollection<ChildTable> implementieren, oder? Aber sonst noch welche Einschränkungen?

Garnicht.
ChildTableCollection ist einfach der Variablenname der erzeugten ChildCollection<ChildTable>.

sry, ich meinte die ChildCollection<ChildTable>...

ChildCollection ist eine in Retina 2.0 vorhandene Generische Collection.
Da musst Du nichts machen, nur so hinschreiben.

Gehen auch abgeleitete Klassen davon?

Bahnhof?

Wozu?

Hallo,
da ich nun auch einen O/R Mapper benötige bin ich auf der Suche und vergleiche.
Was für Vor- / Nachteile hat Retina allgemein und gegenüber anderen O/R Mappern?

Hallo zusammen,

nach dem die Frage nach dem Tutorial doch nur eine Nebenrolle gespielt hat, haben ich den Thread zurück nach Datentechnologien geschoben und ihn umbenannt.

herbivore

Ich habe mich vor fast 2 Jahren nach einem ORM umgesehen.

Der hauptsächliche Grund, bei Retina zu landen, trotz der Einschränkungen und
Fehler, war recht einfach.

Ich persönlich mag die Trennung zwischen Klassen und Mapping nicht.
Die meisten ORM arbeiten hier mit externen XML/Text Dateien, die zwar auf der
einen Seite die Abstraktion erhöhen, aber auch die Übersicht erschweren.

Du musst immer zusehen, das beides synchron ist, weshalb ich dann "nur" noch
ein paar zur Auswahl hatte.

Gentle.NET, XPO und eben Retina.NET.

Gentle:war zu dem zeitpunkt recht gross und langsam.
XPO: die wollen Geld 😉, nein das war nicht der grund, denn €199 wäre es wert,
wenn nicht die manchmal crude Benam(s)ung dabei wäre, was ja ein durchgängiges
Problem bei DevExpress ist.

  • Naja, dann blieb eigentlich nur Retina.
  • Es ist recht klein und übersichtlich.
  • Die Benamung ist auch verständlich.
  • Es ist einfach eine neue DB anzubinden.
  • Da die FW 2.0 version nun auch schon fast 1 1/2 Jahre da ist,
    konnte ich da einiges an performance herauskitzeln 😉

Und wenn man sich ersteinmal entschieden hat, ist es natürlich einfach
damit etwas zu "bauen".

Nachteile gibt es natürlich auch.

  • Durch die geringere Verbreitung ist natürlich nicht alles abgedeckt und getestet.
  • Eine einmannshow kann zwangsläufig nicht so viel wie eine ganze Truppe.
  • Die Abfragesprache ist nicht so mächtig wie bei NHibernate und CO
  • ....

Aber für mich ist es ein guter Kompromis.

Vielen Dank für die Schilderung.
Werds mir mal näher ansehen. Klingt interesant.

Ist deiner Meinung nach noch viel Handarbeit gefragt oder ist der Zustand so wie er zum Download gibt brauchbar? Hinsichtlich Performance, Bugs.

Also Performance und Bugs der 2.0 sind so gravierend, das die so nicht wirklich taugt.

Ich schaue mir gerade die 1.0.8 an, ob man die vernünftig benutzen kann.

Ansonsten werde ich mal einen "kleinen" vergleich von meiner 2.0 zum
orginal machen, und evtl mal mit dem author abgleichen.

Dann entscheide ich, was ich für den Workshop benutze.

Klingt gut. Freue mich schon drauf.

Ich auch

me too =)

Ich schliesse mich an.

Original von FZelle
Also Performance und Bugs der 2.0 sind so gravierend, das die so nicht wirklich taugt.

gut gesprochen 🙂

hab mich mit FZelles Hilfe eine weile an der 2.0 versucht, aber aufgegeben, weil die nur noch NullReferences, InvalidOperations und sonst alles was man nicht sehen will geworfen hat.

offtopic:
hab mich entschieden dieses projekt mit VisualWebDeveloper (Orcas Beta 1) umzusetzen, weil ich sowieso mindestens bis zu dessen offiziellem Release brauchen werd, und ich die Abfragen dann mit LINQ machen kann.

loop:
btst #6,$bfe001
bne.s loop
rts

So schlimm ist die 2.0 garnicht, wenn man genau weiss wie es funktionieren sollte 😉

Aber Du solltest LinQ und DLinq und ADO.NET for Entities auseinanderhalten.

ich weiss, dass es den unterschied gibt und hab mal über grundlegende unterschiede gelesen. für mich reicht Linq to Sql. Durch die beta hats noch ein paar macken, hauptsächlich im CodeGenerator, aber nach 30 minuten hatte ich mehr als in Retina jemals hatte...

Ich bin sicher, retina taugt zu sehr viel wenn man wie du eine lauffähige version hat 🙂 Wahrscheinlich kann man beides auch kaum vergleichen.

loop:
btst #6,$bfe001
bne.s loop
rts

Ich werde wahrscheinlich auch umsteigen, aber ich muss halt derzeit auch SW
liefern, und dann ist die Benutzung von Linq halt noch keine Option.

das is mein glück.
bei meinem projekt handelt sichs um einen gefallen - inzwischen ist der zwar schon sehr groß aber immer noch ohne verträge, lieferfristen und pönalen 🙂

ich kanns mir also erlauben für die release auf .net 3.5 zu warten - und ohne Linq würd ich vermutlich so viel zeit in eigenentwicklung legen (auch mit hibernate, retina oder sonstwas), dass der release termin vermutlich sogar noch dahinter liegt.

loop:
btst #6,$bfe001
bne.s loop
rts

Naja, ich bin derzeit mit Retina und zugehörigem Codegenerator, und mit CAB
so schnell, das ich für normale sachen schon ein riesenprojekt bis zur Linq freigabe
fertig hätte.

Hallo FZelle,

Genau dieses Problem habe ich im Moment. Ich habe ein bevorstehendes "Riesenprojekt" und habe ein wenig Zeitdruck.

Da ich eigentlich immer Wilson ORMapper benutzt habe, kann ich dies in diesem Projekt nicht tun und wollte eigentlich auch vom WORM weg.

Da ich jetzt neu bzgl. Retina.NET bin kann ich nicht so schnell mein Projekt voranbringen wie ich es gerne hätte. Auch benötige ich Informationen wie ich ein "Plug-In" für Sybase Datenbanken machen kann.

Desweiteren würde ich gerne wissen ob ich mit 1.0.8.0 oder mit 2.x anfangen soll.

Ich sitze gerade an dem Vergleich zwischen der offiziellen 2 und meiner 😉

Ich kann Dir bis mittag dann sagen, welche besser ist .
Ich schaue mir auch mal diese Sybase DB an.

Benutzt Du CAB?

Hallo FZelle,

Vielen Dank für deine Hilfe.

Nein, ich benutze kein CAB.

Warum nicht?

Es erleichtert die erstellung von grossen Projekten so ungemein, das
es eine Sünde wäre es nicht zu benutzen.

Im ersten Schritt soll in diesem Projekt die GUI ASP.NET sein.

Windows Forms / WPF soll vielleicht wenn es entsprechend passt garnicht erst folgen.

Dann solltest Du auf jedenfall den http://www.codeplex.com/websf anschauen.

Ich habe jetzt mal meine und die Orginal 2.0 durchgesehen.
Sind eigentlich "nur" eine Handvoll Dateien anzupassen.

Ich werde leider erst morgen früh dazu kommen die mal zu separieren und
die kann ich dann mal bereitstellen.

Ich werde auch die V2 dann für den Artikel benutzen.

Zum Sybase Problem, da gibt es bei Sybase den ASE Client, in dem Sybase SDK,
und wenn ich das hier richtig lese, ginge auch OleDB
http://www.ianywhere.com/developer/technotes/sas_adonet.html

Ich würde gerne WCSF benutzen.

Das große Problem ist eben dass ich nicht durchsteige wie ich das ganze in meinem Projekt verwenden kann. Obwohl ich schon die Dokumentation durchgelesen habe und einfach nicht richtig verstehe.

Mein Problem ist auch, dass ich nicht weiß ob ich dann die Business Module dazu benutzen kann um einfach einen anderen Presenter benutzen kann. Sprich anstatt ASP.NET Windows.Forms zu benutzen.

Desweiteren wird .NET FW 3 benötigt, was ich z.B. bei gehosteten Systemen (kein eigenen Server) im Moment nicht verwenden kann. Zwar hat es mit diesem Projekt nichts zu tun, aber immerhin.

Es sind immer wieder irgendwelche Fragen offen und die Einarbeitung in diese Infrastruktur wird, zumindest bei mir, einige Zeit andauern. Und ich kann nicht behaupten dass ich erst gerade mit der Programmierung angefangen habe.

Vielleicht brauche ich auch nur die richtigen Informationen.

CAB und auch WebSF benutzt man nicht, denn sie stellen den Rahmen deiner
Anwendung dar.

Ist aber alles immer recht einfach, wenn man es mal verstanden hat.

Hast Du Dir mal die Zeit genommen die HandsonLabs durchzugehen?
Danach geht es meist schon ziemlich schnell mit den Erkenntnissen.

Und die benötigen nicht das FW 3.0, sie benutzen die neue EnterproseLib 3.0 aber das war es auch schon.

FW 3.0 brauchst Du nur wenn Du WCF, WF und Cardspace benutzen willst.

Und einfach einen anderen Presenter kannst Du garnicht austauschen, denn der
Presenter ist der Arbeitende, der den useCase vorantreibt, Du müsstest den View
tauschen.
Aber auch das geht nicht wirklich so einfach wie es manchmal gesagt wird.

Plattformunabhängigkeit ist eigentlich immer teuer erkauft, entweder durch faule
kompromisse, oder soviel code, das man es auch gleich zweigeteilt hätte lassen können.

Aber wenn Du deine gesammte BL von allen anzeigen trennst,
dann ist der Umstieg, wenn nötig recht "einfach" zu machen.

Genau deswegen habe ich eigentlich schon immer die Logik von der Anzeige getrennt.

Dadurch konnte ich entsprechend besser und einfacher die "Portierung" durchführen.

Ich werde bei meiner Architektur bleiben. Habe auch schon einiges an Zeit investiert.

Das einzige was ich noch (zwar nicht unbedingt) benötige ist ein guter ORM, mit der ich auch verschiedene Datenbanken ansprechen kann (Sybase, MySQL, VistaDB, MSSQL).

Ich werde mir morgen XPO herunterladen und mir das System mal anschauen. Bis jetzt hatte ich keinen "guten" ORM gefunden mit der ich so viele Datenbanken ansprechen kann. Ich weiß aber nicht in wie weit das ganze Performance-Technisch aussieht.

Nicht zum Unterschied zu nativen Abfragen sondern zwischen verschiedenen ORMs. Deswegen will ich auch nun ein paar ORM anschauen und ein paar Tests durchführen. Da gehört auch Retina.NET dazu.