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.
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.
Ich habe das ganze jetzt mal nachgestellt. Bei mir funktioniert alles wunderbar. Auch auf einem zweiten Rechner. Hast Du die Access geschlossen in der Zeit des Zugriffs?
Der ConnectionString läuft bei mir genau so, wie Du Ihn angegeben hast. Ich habe auf eine Access2003 Datei zugegriffen. Stellt sich die Frage, was bei Dir anders ist.
Wie bereits beschrieben, wird keine Zauberei im hintergrund durchgeführt. Solltest Du wirklich mit einer anderen Applikation zugreifen können, sollte es mit Invist auch gehen. Hast Du irgendwelche Benutzergruppen, oder sonstige Zugriffsrechte eingestellt?
mir fallen spontan zwei Punkte ein.
1. Hast Du als Datenbank auch Access ausgewählt?
2. Hast Du bereits in einer anderen Applikation den zugriff mit Deinem ConnectionString versucht?
Solltest Du mit einer ganz einfachen Applikation eine Verbindung zur Datenbank mit OleDB aufbauen können, dann sollte es auch mit Invist gehen. Zum Verbindungsaufbau benutzt Invist den OleDB Provider für den Verbindungsaufbau.
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.
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.
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.
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.
Ein eigener O/R Mapper macht aus meiner Sicht nur Sinn, wenn Wert auf etwas gelegt wird, was andere Mapper bisher nicht können, oder nicht ihren Fokus darauf gelegt haben.
Ich selber habe einen O/R Mapper geschrieben. Mein Fokus war etwas, was z.B. NHibernate nicht konnte. Ich wollte Code generieren und in die IDE integriert sein, mit einem vernüftigen UI.
Heute gibt es aus meiner Sicht genügend Mapper, dass es nicht nötig ist, einen weiteren zu entwicklen. Vor allem sind die meisten Mapper lizenzkostenfrei. Selbst Microsoft hat mit LINQ und dem Entity-Fraemwork etwas tolles entwickelt.
Du solltest vielleicht nicht die Zeit investieren, einen eigenen Mapper zu schreiben, sondern vielmehr vorhandene Mapper bewerten und die richtigen Einsatzgebiete herausfinden.
Wie sieht denn Deine Datenbank aus. Ich gehe jetzt mal davon aus, dass Die Tabellen genau so heisst wie Deine Klasse und jeden Property auch dem Namen der Spalten entsprechen.
Hast Du es schon mal in Invist als Mapper probiert. Bietet sich an, falls Du eine exitierende Datenbank hast und daraus gerne die KLasse generieren möchtest.
Dann sollte das die Lösung sein. Wie die Exception sagt, wird die Funktionalität im CompactFramework nicht unterstützt.
Da würde ich ich der MSDN nochmal genau nachlesen, was das CompactFramework bietet.
In jedem Fall sagt die Fehlermeldung, dass es nicht unterstützt wird, weshalb es in der Desktop-Anwendung funktioniert und in der Anwendung mit CompactFramework eben nicht.
ZUr Not kannst Du es selber dserialisieren bzw. deserialisieren.
Für vereinfachten Datenzugriff hilft Dir vielleicht Invist als Datenzugriffsschicht weiter. Der Zugriff wird extrem vereinfacht. Es gibt auch Video Tutorials.
Die Installation wurde nochmal überarbeitet. Fehlende Rechte , sowie die Mindestanforderung von Visual Studio Standard werden während der Installation erkannt und gemeldet.
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.
Ich persönlich stehe mehr auf Attribute. Aber das ist ja jedem selber überlassen.
Aspect-orientierte Programmierrung setzt auch auf Attribute auf. Also können Attribute nicht schlecht sein. Schliesslich hat Java mit Annotations dieses Prinzip übernommen.
Grundsätzlich ist erst mal die Absicht eines Mappers zu beachten. Möchte man eine Klassenstruktur erstellen anhand einer Datenbank oder ist man doch eher auf dem Trip, dass man starke vererbungen möchte und daraus das Script für eine Datenbank generiert.
Solltest Du Visual Studio 2008 und das .NET Framework 3.5 im Einsatz haben, ist LINQ vielleicht ein Ansatzpunkt um sich in das Thema einzulesen. Dort wird vielleicht auch klar, dass man ohne SQL auskommt.
Der O/R Mapper der am weitesten verbreite ist nenn sich NHibernate. Bei CodeProject gibt es dazu eine gute Einleitung wie so etwas funktioniert.