Laden...

.NET O/R Mapper

Erstellt von mirkom76 vor 16 Jahren Letzter Beitrag vor 12 Jahren 12.847 Views
M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 16 Jahren
.NET O/R Mapper

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

D
211 Beiträge seit 2006
vor 16 Jahren

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.

Gruß

DevHB

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 16 Jahren
.NET O/R Mapper

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

D
211 Beiträge seit 2006
vor 16 Jahren

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.

Gruß

DevHB

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 16 Jahren

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

D
211 Beiträge seit 2006
vor 16 Jahren

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.

Gruß

DevHB

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 16 Jahren

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 15 Jahren

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 15 Jahren

Die Installation wurde nochmal überarbeitet. Fehlende Rechte , sowie die Mindestanforderung von Visual Studio Standard werden während der Installation erkannt und gemeldet.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 14 Jahren

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

B
122 Beiträge seit 2004
vor 14 Jahren

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

I
279 Beiträge seit 2008
vor 14 Jahren
Genial! :-)

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

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 14 Jahren

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

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

B
122 Beiträge seit 2004
vor 14 Jahren

Hallo,

Ok vielen Dank 😃

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 14 Jahren

@Boonkez,

die Änderungen für MySql sind jetzt online.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

C
116 Beiträge seit 2004
vor 14 Jahren

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 😃

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 14 Jahren

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 14 Jahren

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.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

906 Beiträge seit 2005
vor 14 Jahren

Hi, ich würde mir deinen Mapper gerne mal ansehen, aber du unterstützt leider keinen Firebird. Kannst du das vllt noch einbauen?

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 14 Jahren

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

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

W
35 Beiträge seit 2009
vor 13 Jahren

Hallo mirkom76,

der Mapper gefällt mir eigentlich sehr gut, aber leider kann ich nirgends eine ausfürliche Doku finden.

Kannst du mir einen Tipp geben wo ich eine solche finde? (egal ob auf englisch oder deutsch)

Viele Grüße
Waldemar

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 13 Jahren

Reicht Dir die vorhandene nicht aus?

Ich bemühe mich die Doku so schlank wie möglich zu halten.

Okay, sie könnte etwas ausführlicher sein, aber was konkret fehlt Dir denn an Information?

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

Z
403 Beiträge seit 2007
vor 12 Jahren

Hallo mirkom76,

ich habe mir dein Mapper mal angesehen, da ich schon länger nebenbei auf der Suche war. Ich habe mal anhand der Doku versucht ein Testprojekt aufzusetzen.

Ensure that all names of classes, stored procedures and views has no spaces.
Press save, when the names are as you like.

Hab auf save geklickt und nun hängt Visual Studio 2010 seit etwa 15 Minuten.

Ist das so gewollt (dauert die Erstellung der Klassen solange) oder habe ich etwas übersehen ?

Verwendet habe ich MySQL.

Gruß André

2.298 Beiträge seit 2010
vor 12 Jahren

Ich wollte mir auch gerade den Mapper anschauen, doch leider kann ich keinen Download für Visual Studio 2005 finden, gibt es dafür keine Version?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 12 Jahren

Hallo TheGear,

ich kann mir gut vorstellen, dass Du das Gefühl hast, dass etwas nciht in Ordnung ist. Leider kann es teilweise sehr lange dauern. Das steht bei mir ganz oben auf der Liste, dass ich neben der Überprüfung des ConnectionStrings eine Anzeige einbaue, was gerade passiert.

Ich habe es sogar schon in einem Projekt erlebt, dass das auslesen 30 Minuten gedauert hat. Da bin ich auf das Problem aufmerksam geworden, dass an dieser Stelle ein Feedback kommen muss.

Auch wenn es hart klingt, hab etwas Geduld.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

M
mirkom76 Themenstarter:in
110 Beiträge seit 2007
vor 12 Jahren

Hallo inflames2k,

die Version für 2005 liegt unter folgenden Pfad: http://2005.invist.net/

Da ist das Verhalten allerdings noch etwas anders. Version 2.X ist eine komplette Neuentwicklung mit Konzepten, die sich in der Version für 2005 bewährt haben.

Das Laden und Speichern ist in beiden Versionen gleich. Allerdings ist Version 1.x wesentlich eingeschränkter und hat ein anderes UI.

UND: Version 2.x hat eine Testabdeckung von 100% im Framework, laut eingesetztem Tool.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

2.298 Beiträge seit 2010
vor 12 Jahren

Ich werd mir sowieso beide mal ansehen, zu Haus hab ich aber nur Zugriff auf ne 2005er Umgebung. Ansonsten danke für den Link. 😃

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |