2008-09-18 11 views
17

NHibernate n'est pas vraiment un bon ajustement pour notre environnement en raison de toutes les dépendances. (Castle, log4net, etc.)Alternatives légères à NHibernate

Existe-t-il une bonne alternative légère?

La prise en charge de bases de données simples basées sur des fichiers telles que Access/SQLite/VistaDB est essentielle.

Idéalement, quelque chose contenu dans un seul assemblage qui ne fait référence qu'aux assemblages .NET. Si cela nécessite seulement .NET Framework 2.0 ou 3.0, c'est un bonus.

Répondre

2

De manière générale, pour que votre base de données fonctionne avec .net, vous avez besoin d'un fournisseur ADO.Net.

Pour MS Access (Jet), le fournisseur est livré avec .net. Pour SQLite, il existe un fournisseur ADO.Net autonome.

En ce qui concerne la couche d'accès aux données lib, si vous voulez une abstraction sur ADO.Net:

Tous ceux qui travaillent à partir bien avec framework 2.0 et plus.

Fondamentalement, vous choisir (et il y a beaucoup de choix)

8

Pour un ORM léger qui fonctionne bien et ne nécessite qu'un seul assemblage pourquoi ne pas essayer Lightspeed de Mindscape. Ce n'est pas une source ouverte, mais la source est disponible et son prix est raisonnable - le risque avec la plupart des ORM qui ne sont pas bien adoptés est bien sûr la qualité et le niveau de support, et il y a très peu d'ORM open source. Espace net pour le moment. En raison de votre aversion pour les dépendances de NHibernate, il semble que vous n'ayez pas besoin d'un framework de journalisation ou d'une des facettes du projet Castle: IoC, Monorail, etc. Avez-vous pensé à prendre le strict minimum de NHibernate? (Log4net et les collections Iesi je crois, et proxy dynamique du projet Castle?) et ILMerge courir sur eux pour les consolider dans un seul ensemble - pourrait prendre un peu de violon, mais ce n'est pas trop dur - ou bien vous pourriez simplement tirer le code source de chacun de ces projets dans une version personnalisée de NHibernate que vous gérez pour votre organisation, qui supprime les fonctionnalités non requises par votre projet/organisation - ce n'est pas aussi difficile que cela puisse paraître et j'ai fait quelque chose dans ce sens pour un projet où nous voulions bénéficier d'un ORM, mais nécessaire pour réduire la taille de la f distribuée iles/installateur. En outre - êtes-vous peut-être en mesure d'expliquer ce que vous ressentez est trop "lourd" sur une solution à base de Nhibernate ... dans mon expérience, c'est un cadre ORM relativement léger par rapport à certains.

2

certaines des alternatives:
- ActiveRecord - il utilise nhibernate.dll en arrière-plan, mais la configuration est effectuée via des attributs.C'est comme la version allégée de nhibernate
- Subsonic
- CoolStorage.NET - Je l'ai beaucoup utilisé avec de petits projets. Fonctionne bien avec le nombre de dbs

0

LINQ to SQL peut être une bonne alternative aux systèmes ORM «heave» si vous l'utilisez correctement.

+3

LINQ to SQL ne prend en charge que SQL Server - l'auteur a déclaré que la prise en charge des DB basés sur des fichiers est essentielle. –

+0

LINQ to SQL prend en charge la base de données basée sur des fichiers - Microsoft SQL Server Compact, preuve: http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx – too

1

Voici une big list d'alternatives, celles que je vous recommande:

  • Coolstorage
  • SOODA
  • ODX
  • Lightspeed (gratuit pour les 8 objets ou moins)

Ces 4 sont les plus légers. Subsonic, ActiveRecord et d'autres sont destinés aux grands systèmes. Ils fonctionnent bien sur les systèmes plus petits mais (au moins pour ActiveRecord) viennent avec une énorme liste de dépendances et d'overkill pour un petit système. J'irais avec Lightspeed et dirais que n'importe quoi sous 8 objets est un petit système, et simplement utiliser NHibernate parce qu'il est largement adopté est bon pour la mise à l'échelle mais à court terme n'a aucun sens - et avoir une couche entre l'ORM et vos consommateurs peuvent travailler autour de ça de toute façon.

+0

Ce lien a expiré, le nouvel emplacement est http://shrinkrays.net/articles/a-look-at-net-object-relational-mapper-orms.aspx –

+0

Mise à jour de l'url –

7

Ajouter à cette liste, vous pouvez aussi jeter un oeil à Dapper (écrit et utilisé par StackOverflow lui-même).

+0

Très belle bibliothèque - la simplicité est une forme d'art perdue! –

0

Si vous n'avez pas besoin d'ORM entièrement fonctionnel et que vous avez juste besoin d'une couche de données indépendante de base de données rapide sur ADO.NET, essayez le code source ouvert NI.Data library (V2). Il est très léger (juste un petit assemblage, pas d'autres dépendances), fournit toutes les infrastructures de la couche de données standard:

  • abstraction de la requête et l'analyseur pour sa représentation de chaîne appelée « Relex » (il ressemble à: « livres (note = 5) [title, id] » - très bonne alternative à LINQ to SQL et les expressions peuvent être composées à la volée)
  • concept de 'vue' pour l'encapsulation SQL dépendante complexe DB-syntaxe des requêtes
  • données déclenche
  • autorisations de couche de données pour les requêtes de sélection/mise à jour/suppression
  • à partir du b ox prend en charge les fournisseurs MS SQL, SQLite, MySQL, Odbc/OleDb (MS Access). La prise en charge d'autres bases de données SQL pourrait être facilement ajoutée.

Son composant principal (DALC) initialisé juste avec une ligne de code:

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

qui est tout. Si vous avez besoin du support d'exécution de .NET 2.0, vous pouvez essayer de compiler la dernière version de V2 sous la version 2.0 ou utiliser la version précédente (NI.Data.Dalc, V1).