Frage

NHibernate ist nicht wirklich eine gute Passform für unsere Umwelt durch alle Abhängigkeiten. (Castle, log4net usw.)

Gibt es eine gute leichte Alternative?

Unterstützung für einfache Datei-basierten Datenbanken wie Access / SQLite / VistaDB ist von wesentlicher Bedeutung.

Idealerweise enthielt etwas in einer einzigen Baugruppe, die nur Referenzen .NET-Assemblies. Wenn es erfordert nur .NET Framework 2.0 oder 3.0, die ein Bonus ist.

War es hilfreich?

Lösung

Im Allgemeinen für Datenbank-Backend für die Arbeit mit .net benötigen Sie einen ADO.Net Anbieter dafür.

Für MS Access (Jet) ist der Anbieter mit .net ausgeliefert. Für SQLite gibt es ein umluftunabhängigem ADO.Net Provider.

Wie für die Datenzugriffsschicht lib, wenn Sie einige Abstraktion über ADO.Net wollen:

Alle, Beginn der Arbeiten gut mit framework 2.0 und höher.

Im Grunde Sie wählen (und es gibt viel Auswahl)

Andere Tipps

Massiver - https://github.com/robconery/massive

oder

PetaPoco - https://github.com/toptensoftware/petapoco

Beide sind ein einziger CS- ohne Abhängigkeiten außer Datei, was im GAC.

(vollständige Offenlegung, PetaPoco ist etwas, was ich schrieb)

Für eine leichte ORM, die gut und nur führen erfordert eine einzige Anordnung, warum nicht versuchen, Light von Mindscape. Es ist nicht Open Source, ist jedoch Quelle zur Verfügung und es ist preiswert - das Risiko bei den meisten ORM, die nicht gut angenommen wird, ist natürlich die Qualität und das Niveau der Unterstützung, und es gibt nur sehr wenige andere Open-Source ORM Mühe wert mit in dem. Nettofläche im Moment.

Aufgrund Ihrer Abneigung gegen NHibernate Abhängigkeiten es klingt wie Sie für ein Logging-Framework keinen Bedarf haben oder des Schlosses Projekt Facetten IoC dh, Einschienenbahn usw. Haben Sie darüber nachgedacht vielleicht auch nur das Nötigste von NHibernate Anforderungen nehmen ( log4net und die Iesi Sammlungen I und dynamische Proxy von der Burg Projekt glauben) und läuft ILMerge über sie, um sie in einer einzigen Baugruppe zu konsolidieren - vielleicht ein bisschen Fummelei nehmen, aber es ist nicht zu hart - oder alternativ könnte man einfach die ziehen Quellcode für jedes dieser Projekte in einem benutzerdefinierten Build von NHibernate Sie für Ihre Organisation beizubehalten, die die Eigenschaften trimmt aus nicht von Ihrem Projekt / Organisation erforderlich - es ist nicht so hart / akward, wie es klingt, und ich habe etwas in dieser Richtung getan für ein Projekt, bei dem wir wollten einen ORM profitieren, aber notwendig, um die Größe des verteilten Dateien / Installateurs zu reduzieren.

Auch - sind Sie vielleicht in der Lage zu erklären, was Sie fühlen, ist zu „schwer“ über eine Nhibernate basierte Lösung ... in meiner Erfahrung ist es ein ziemlich leichter ORM-Framework zu einigem Vergleich

.

Zusätzlich zu dieser Liste können Sie auch einen Blick auf Dapper (geschrieben für und wird von Stackoverflow selbst).

einige der Alternativen:
- Active - es nutzt nhibernate.dll im Hintergrund, aber Konfiguration wird durch Attribute getan. Es ist wie Lite-Version von nhibernate
- Subsonic
- CoolStorage.NET - habe ich es viel mit kleinen Projekten. Funktioniert gut mit der Anzahl der dbs

Hier ist eine große Liste von Alternativen, die ich würde empfehlen:

  • Coolstorage
  • Sooda
  • ODX
  • Lightspeed (kostenlos für 8 Objekte oder weniger)

Die 4 sind die leichtesten diejenigen. Subsonic, Active und andere sind bei großen Systemen ausgerichtet. Sie funktionieren auf kleineren Systemen, sondern (mindestens für Active) werden mit einer riesigen Liste von Abhängigkeiten und viel des Guten für ein kleines System. Ich würde mit Light gehen und sagen, dass alles unter 8 Objekte ist ein kleines System, und einfach NHibernate verwenden, weil es weit gut angenommen ist, ist für die Skalierung, aber auf kurze Sicht keinen Sinn macht - und eine Schicht zwischen der ORM und mit Ihren Kunden arbeiten können, um diese sowieso.

LINQ to SQL könnte eine gute Alternative zu "heben" ORM-Systeme sein, wenn Sie es richtig verwenden werden.

Wenn Sie nicht voll funktionsfähigen ORM brauchen und benötigen nur schnelle Datenbank unabhängige Datenschicht über ADO.NET versuchen, Open-Source- NI.Data Bibliothek (V2) . Es ist sehr leicht (nur eine kleine Montage, keine anderen Abhängigkeiten), bietet alle Standard-Datenschicht Infrastruktur:

  • query Abstraktion und Parser für seine String-Darstellung 'relex' genannt (es sieht aus wie: "Bücher (Bewertung = 5) [title, id]" - sehr gute Alternative zu Linq-to-SQL und Ausdrücke können auf die zusammengesetzt sein fliegen)
  • 'view' Konzept für komplexe DB-Syntax abhängig von SQL-Abfragen Einkapseln
  • Daten Trigger
  • Datenschicht Berechtigungen für ausgewählte / update / delete Abfragen
  • aus der Box unterstützt MS SQL, SQLite, MySQL, ODBC / OLEDB (MS Access). Unterstützung für andere SQL-Datenbanken leicht hinzugefügt werden.

Die Hauptkomponente (DALC) initialisiert nur mit einer Codezeile:

var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr);

Das ist alles. Wenn Sie .NET 2.0 Runtime-Unterstützung benötigen, können Sie versuchen, entweder neueste Version V2 unter 2.0 Laufzeit zu kompilieren oder frühere Legacy-Version (NI.Data.Dalc, V1).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top