2009-10-21 22 views
5

Ich möchte eine Art von Nosql-Datenbank in meiner Web-Anwendung, die in asp.net mvc geschrieben ist, aber nichts nützliches finden können. Ich habe mir MongoDB und CouchDB angeschaut, aber ich hätte gerne bessere APIs (stark typisierte nicht magische Zeichenfolgen) für meine Abfragen als sie haben. Gibt es so etwas für .NET?Dokument-basierte Datenbank für. NET

Antwort

2

helfen bin ich das Prinzip Autor hinter dem .Net-Treiber für Mongo. Derzeit gibt es dafür noch keinen ORM-ähnlichen Mapper. Stattdessen arbeitet es mit einfachen Dokumenten, die einem Wörterbuch entsprechen. Es wäre nicht schwierig, die Reflektion zu verwenden, um über die Felder in einem Dokument zu iterieren und sie Eigenschaften für ein Objekt zuzuordnen. Ich habe eine einfache Sache für LDAP-Ergebnisse in der Vergangenheit geschrieben. Sie müssen sich keine Gedanken über die SQL-Injektion mit Mongo machen, da es wirklich keine Abfragesprache gibt, die geparst wird. Alle Fahrer sprechen Mongo in seiner Muttersprache. Es gibt ein gewisses Potenzial, wenn Sie Javascript dynamisch generieren und es an die Datenbank senden, aber die Notwendigkeit dafür sollte meist selten sein. Wenn Sie Fragen zur Verwendung des Treibers haben, können Sie diese gerne in der Google Group veröffentlichen oder eine Nachricht über GitHub senden.

+0

Hallo, ich habe mich entschieden, Mongo in meinem Projekt zu verwenden, aber ich weiß nicht, wie ich ein Objekt in mein Dokument neste, sagen wir, ich habe ein Fragedokument und möchte Antworten darin haben, habe aber keine Ahnung, wie es geht Dies sind –

+0

Eingebettete Dokumente sind nur Attribute in einem enthaltenen Dokument. Hier ist ein Liner. Sie können es bei Bedarf in mehreren Zeilen trennen. Dokument doc = neues Dokument() Anhängen ("embeddedDoc", neues Dokument(). Append ("attr1", "val1")); –

+0

Ok, aber ist es möglich, Sammlung von Dokumenten zu addieren, sagen wir, ich habe Frage und will Sammlung von Antworten dafür haben, als ich versuchte dies tun hatte ich Ausnahme becouse Schlüsselantworten bereits vorhanden –

1

MongoDB verwendet keine magischen Zeichenfolgen, sondern verwendet Abfragedokumente zur Darstellung von Abfragen. Es ist auch ein open source C# driver verfügbar. Ich bin mir der Besonderheiten des C# -Treibers nicht sicher, aber es sollte relativ einfach sein, eine Validierungsschicht darüber hinzuzufügen, falls noch keine vorhanden ist. Es gibt ähnliche Projekte zum Beispiel in Python und Ruby.

+0

Ja, aber bitte sagen Sie mir, wie ich mein Domain-Objekt in typsicherer Weise speichern und abrufen kann? –

+0

Ich bin mir nicht sicher, was genau du suchst, wenn du "type safety" sagst. Ich denke, das Beste, was Sie tun können, ist eine Datenbankzugriffsebene zu verwenden, die die Überprüfung der Daten übernimmt, in denen Sie speichern und aus MongoDB aussteigen. – mdirolf

1

Sie können mit ADO.NET eine Verbindung zu Textdateien herstellen und sie mithilfe der SQL-Syntax und der über ADO.NET ausgegebenen Befehle lesen/schreiben. There's an example in this article. Ihre Daten werden in einem für Menschen lesbaren Format im komma- oder tabulatorgetrennten Datensatzformat gespeichert. Natürlich wird es bei großen Datenmengen nicht schnell gehen. Ich bin mir nicht sicher, ob Sie versuchen, sowohl SQL-Datenbanken als auch SQL-Syntax zu umgehen. Die Textdatei-Lösungen können von SQL abgefragt werden.

Sie können dasselbe auch mit Excel-Tabellen tun, indem Sie sie wie SQL-Datenquellen behandeln (auch wenn dies nicht der Fall ist) über ADO.NET-Zugriff.

1

Nicht sicher, ob es ist das, was Sie suchen, aber man könnte versuchen http://www.db4o.com/ ich habe es nie selbst, aber es kann Ihnen

1

Dies war nicht zu der Zeit als diese Frage gestellt wurde ... aber jetzt gibt es Raven DB, eine Dokument-Datenbank geschrieben in C# von Ayende Rahien.