.NET O/R Mapper

mirkom76
Hallo,

da ich bisher keine O/R Mapper gefunden habe, der mir Observer anbietet, habe ich selber einen Code-Generator geschrieben, der zu einer bestehenden Datenbank die Klassen generiert. Ein zugehöriges Persistence-Framework runden die Sache ab.

Siehe  http://www.invist.net

Für Anregungen bin ich natürlich jederzeit offen.
DevHB
Hi,

woran kann es liegen, wenn mein SqlExpress nicht in der Liste für die DBServer eingetragen ist (ComBox ist leer).
Beide Dienste laufen, ich kann von anderen Anwendungen und im VS Studio den Server und die DBs aufmachen / ansprechen.

App.Config ist angelegt und der ConnString ist definitiv richtig.
mirkom76
Hi,

es wird eventuell falsch in der Registry gespeichert. Momentan werdne alles Einträge etwas umständlich in der Registry gespeichert. Ich arbeite daran, die Konfiguration in einer XML-Datei zu speichern.

Ich gehe jetzt mal davon aus, dass du mit der ComboBox die Box meinst, die einem die Datenbank-Server auflistet.

Wie hast Du den Datenbankserver denn abgelegt?
Eventuell in diesem Format: [Rechner]\SQLEXPRESS

Schau dazu bitte mal in der Registry nach, wie der Server abgelegt ist.
HKEY_CURENT_USER\Software\Mirkom\Invist\SQLServers\[DBSERVER]

Deine Server müsste dass so ein Format haben: [Rechnername]#SQLEXPRESS

Falls es bei Dir anders aussieht, wie ist der Pfad den bei Dir?

Habe gerade nochmal nachgesehen, wie der Servername angegegen werden kann. Die Speicherung in der Registry ist nicht die optimale Lösung. Deshalb wird es auch bald umgebaut.

Wenn Du den Server neu anlegts, Bitte mit folgendem Format: [Rechner]\SQLEXPRESS

Andere Varianten, wie .\SQLEXPRESS führt zu Problemen. Das ganze Gilt natürlich nur für die Generierung zu. Innerhalb der Applikation ist dies nicht relevant. Da kann der Connection So aussehen, wie man es gewohnt ist.
DevHB
Hi,

ja, meine die ComboBoxv mit der Serverauflistung.
Habe nun einen Eintrag in der Registry "RECHNERNAME#SQLEXPRESS",
vorher war dieser Eintrag leer!

App.Config angepasst auf "RECHNERNAME#SQLEXPRESS".
(Auch mit Rechnername\SQLEXPRESS gehts nicht).

Aber es taucht immer noch kein Server in der Auflistung auf.
mirkom76
Hallo,

in der app.config braucht man die Umstellung nicht, da an dieser Stelle mit '\' umgegangen werden kann. Das Problem entsteht nur in der Registry. Das Zeichen '#'
bei der Generierung von Klassen in ein ' \' umgebaut.

Zu dem anderen Problem. Erst einmal ist es wichtig, dass das generieren geht. Hast Du die Verbindung zur Datenbank manuell in der Registry bearbeitet, oder hast Du die Verbindung über die UI neu angelegt?

Wenn Du es manuell angelegt hast, lösch den Eintrag aus der Registry bitte und leg ihn über die UI neu an. Das ist nötig, da es noch eine Unterstruktur gibt. Wenn die nciht stimmt mein die UI, dass es keine Datenbank gibt. Wenn ein Server ohne Datenbank gibt, wird dieser in der ComboBox nicht angezeigt, da dieser Eintrag überflüssig ist.
Deswegen unbedingt die Datenbank per UI anlegen und nicht in der Registry umbauen.
DevHB
Hi,

habe nun doch eine Verbindung bekommen, in dem ich RechnerName\Servername und DB Name nicht ausgewählt habe, sondern es direkt eingegeben habe.

Werde mir Dein Projekt die Tage zu Gemüte führen.
mirkom76
Hallo,

dann stimmt trotzdem etwas in Deiner Registry nicht. Am besten Du löscht alle Unterverzeichnisse unter SQLServers in der Registry. Wenn Du dann, das was Du direkt eingegeben hast als Neuanlage einer Datenbank wiederholst, dann sollte es auch klappen.
mirkom76
Nach über einem Jahr Arbeit ist die Version 2.0.0 endlich released. Invist hat ein komplettes Redesign erhalten und ist jetzt vollständig in Visual Studio integriert.

Invist setzt kein Datenbank-Design voraus. Unterstützt werden zum jetzigen Zeitpunkt SQL-Server, Oracle und MySql.

Zusätzlich wird eine komplett typsichere Filterung von Query auf die Datenbank unterstützt. Gewohnte Features wie z.B. PropertyChanged Events sind natürlich erhalten geblieben,


Voraussetznung für Invist sind:
Visual Studio 2008 Standard ( oder höher)
Administrationsrechte zum Installationszeitpunkt.
mirkom76
Die Installation wurde nochmal überarbeitet. Fehlende Rechte , sowie die Mindestanforderung von Visual Studio Standard werden während der Installation erkannt und gemeldet.
mirkom76
Version 2.1.0 ist released. Kern der Version ist die unterstützung weitere Datenbanken

Es werden jetzt folgende Datenbanken unterstützt:
1. Microsoft SQL Server
2. Oracle
3. MySql
4. SQLite
5. VistaDB
6. Access

Zusätzlich als Information ist zu nennen, dass  Invist das INotifyPropertyChanged Interface implementiert hat.
boonkerz
Hallo,

Was muß man machen damit es mit MySql läuft?

Ich habe die mysql lib hinzugefügt usw ich kann die xml hinzufügen dann wähle ich die connection aus. dann arbeitet er ne weile und die xml ist da aber leer.

MFG
iced-t89
Hey super! einen O/R-Mapper für MS Access habe ich schon ewig gesucht. Bisher musste ich mir immer meine Entitäten und sonstige Klassen selbst erstellen, as war sehr umständlich ^^.

Werde das proggy heute abend mal ausprobieren und dir bescheid sagen wie das so mit access funzt :-)



Mit freundlichen Grüßen,
Jan
mirkom76
@Boonkez,

das ist tatsächlich ein Bug. Das ist ein Problem mit den Berechtigungen. Ich hatte eine Änderung vorgenommen und mit einer Onlinedatenbank getestet. Alles wunderbar. Bei einer lokalen datenbank, warum auch immer habe ich das gleiche Problem wie Du.

Ich werde wohl beide varianten abdecken müssen. Das Problem was Du hast, ist jetzt eingebunden.

Da ich gerade an einer neuen Version baue, die das AsyncPattern unterstützt und somit das asynchrone laden und persistieren unterstützt, wird es wohl noch ein paar Tage dauern, bis ich das Problem mit MySql behoben habe.

Mein Anspruch ist jeden Bug mit einem UnitTest zu reproduzieren. Dieser Linie bleibe ich treu. Das Framework was innerhalb einer Applikation benutzt wird, hat eine testabdeckung von 100%. Das soll natürlich so bleiben. Bei der ermittlung der Metadaten bin ich noch nicht soweit mit meiner Testabdeckung. Aber ich arbeite dran. Deswegen möchte ich alles mit Tests abdecken.

Am besten Du geduldest Dich noch ein paar Tage und wartest, bis ich die neue Version hier ankündige oder Du schaust ab und zu mal auf der interseite von  Invist nach.

Vielen Dank in jedem Fall für die Fehlermeldung.
boonkerz
Hallo,

Ok vielen Dank :)
mirkom76
@Boonkez,

die Änderungen für MySql sind jetzt online.
Counterfeit
Hallo mirkom76,

also ich muss sagen, der O/R Mapper weiß mir zu gefallen :-) Ich hätte aber einen Vorschlag bezüglich deiner Vorlage (Dialog).

- ConnectionKeySelectionDialog, man könnte dafür einen besseren Namen finden *g*
- Der Dialog lässt sich maximieren, an der Stelle unnötig
- Wenn man den Dialog schließt, öffnet er trotzdem die Datei Invist1.xml und zeigt ein leeres Fenster an
- Wenn man bevor der Dialog erscheint, das Fenster wechselt, z.B. Management Studio ist der Dialog "verschwunden". Visual Studio 2008 reagiert nicht und erst mit Alt+TAB sieht man das der Dialog im Hintergrund von Visual Studio ist. Außerdem ist er dann ganz links oben am Bildschirm. Eventuell kannst du den Dialog ja in der Taskleiste anzeigen. So sieht man das da was gekommen ist. (Klappt nicht immer, das es verschwindet, hab ich aber im Zusammenhang von Fenster wechseln beobachtet)
- Als der Dialog verschwunden ist, hat man in der Alt+TAB Übersicht das Standard Icon von C# gesehen, eventuell ein eigenes einbauen?

So das wären so meine Anregungen :-)
mirkom76
Hallo Counterfeit,

anregungen sind natürlich immer willkommen. Die UI lässt aus meiner Sicht mehrere Wünsche frei. Sie steht in meiner Roadmap auch für ein Redesign. Das werde ich wohl machen, wenn ich auf VS2010 umsteige. Zum jetzigen Zeitpunkt hat die Doku die höchste Priorität. Denn was nützt das beste Tool, wenn es nicht vernünftig dokumentiert ist.

In jedem Fall werde ich mir Deine Analyse genau ansehen. Viellicht kann ich das eine oder ander schon mal einfliessen lassen.

Vielen Dank für das Feedback. So etwas freut mich immer.
mirkom76
Version 2.2.0 von  Invist ist released.

Hauptfeature ist das asynchrone laden und speichern von Daten. Realisiert wird dies durch die Verwendung des Async-Patterns. Das bedeutet, dass die Implememtierung Event-Gesteuert ist. Es ist somit kein komplizierter Methodenaufruf nötig oder diverse Delegates müssen implementiert werden.

Ein einfaches anmelden am Event reicht dabei völlig aus.

Die Roadmap für die zukunft liegt erst einmal auf der Anleitung, bevor es an Sachen wie LINQ oder eine bessere UI geht.
MagicAndre1981
Hi, ich würde mir deinen Mapper gerne mal ansehen, aber du unterstützt leider keinen Firebird. Kannst du das vllt noch einbauen?
mirkom76
@MagicAndre1981,

einbauen kann ich es schon. Ich weiss nur nicht, wie weit er verbreitet ist. In welchen Bereichen wird denn Firebird eingesetzt? Ist nicht SQLite die am meisten verbreitet Freeware.

Um es kurz zu machen, Firebird ist natürlich interessant für mich. Ich weiss nur ncht, ob sich der Aufwand wirklich lohnt.

Ich kennen niemanden, der Firebird einsetzt. Aus diesem Grund betrachte ich Firebird-Unterstützung als nicht so wichtig an. Nenn mir [EDIT=herbivore]bitte per PM und nicht hier im Thread[/EDIT] mal ein paar Einsatzgebiete. Das könnte meine Meinung beeinflussen.