2008-11-15 5 views
0

Je joue au début d'un projet personnel en C# et MySQL.C# et MySQL - Gentle Framework alternatives

Je suis familier avec l'utilisation de Gentle Framework (en utilisant MyGeneration pour générer les classes, basé sur le modèle de données). Voici ce que j'aime chez Gentle;

  • Simple d'utilisation [classe] .Retrieve (id)/[object] Sémantique .Persist() avec typage fort de champs;
  • Je commence par le modèle de données DB et je choisis quand générer de nouveaux fichiers de code;
  • MyGeneration permet des «sections de code manuelles» qui sont conservées d'une génération à l'autre ...
  • ... et des classes partielles me permettent d'ajouter du code permanent dans des fichiers parallèles, par ex. de simples propriétés en lecture seule (comme «FullName» des membres Prénom et Nom pour un objet Personne) - ou je pourrais utiliser l'héritage;
  • Je trouve que c'est un moyen tolérable et rapide de créer un DAL, et d'y ajouter certaines fonctions de type Business-Object-Layer.

Malheureusement, pour interroger efficacement, je finis à l'aide de requêtes/SqlCommands un peu juste, et repose sur des références faiblement typés pour les noms de colonnes, etc., et semble risquer esquivant le courtier d'objets et donc la mise en cache des avantages. En tout cas, Gentle n'est plus développé, et il semble que le moment soit propice pour envisager des alternatives.

Alors, que dois-je considérer?

  • génération d'ADO datasets est fortement typées possible, mais il semble que ce sera difficile d'y ajouter (par exemple, cette colonne virtuelle « FullName ») d'une manière qui persistera après les mises à jour de la structure de table régénération de l'ensemble de données. NHibernate semble avoir beaucoup de fans ... mais mon premier regard sur elle semble suggérer que la définition de données XML est roi, pas le modèle de données existant dans la DB. Il semble également assez lourd sur les dépendances; La démo de SubSonic semble suggérer qu'il génère des fichiers, et dans la démo de WebAppProjects, il semble qu'il pourrait générer des fichiers d'une manière que je pourrais ajouter ou hériter de;
  • Les outils MySql Connector.Net ne semblent pas prendre en charge la génération de l'ensemble de données pour Linq (par exemple par glisser-déposer), et je suppose qu'il s'agit d'un besoin clé pour un accès aux données fortement typé.

Vos pensées seront grandement appréciées! Merci d'avance ...

Répondre

0

link text Je pencherais pour Subsonic, générateur de DAL mature et améliore la productivité par une grande marge.

Nous l'avons utilisé avec MySQL et SQL Server - pas de maux de tête. Génère des classes pour les tables, les procédures stockées et les noms de colonnes. Donc, chaque fois que nous nous retrouvons à faire Somthing Dot Intellisense déplacer les touches fléchées et le point-virgule.

Chaque fois que votre schéma change, vous pouvez régénérer ces classes et vous êtes chez vous. En outre, vous pouvez les étendre en créant des classes partielles.

Il prend en charge la quasi-totalité de la sémantique SQL - Jointures, chargement Collection par clé primaire, ajout de la clause WHERE, Ordre par, Compte, Haut, Appel des procédures stockées, vues et ainsi de suite. Pour vous donner un aperçu de la table Books [BookID-PK, title, AuthorID], elle génère plusieurs types de méthodes.

  • Insérer méthode qui prend le titre, AuthorID
  • colonnes nullables sont en option paramètres a.k.a de type C# Nullable?
  • méthode de mise à jour Wich prend BookID, AuthorID, Titre
  • Livre de charge par clé primaire (utile lors de l'affichage de la page de détail)
  • BookCollection et entités Livre, Il suffit d'appeler BookCollection.Load et vous avez la liste des livres prêts à se lier à n'importe quel contrôle de base de données

Voici un lien rapide.

Merci, Maulik Modi

+0

Plusieurs années après avoir posé la question, j'ai finalement marqué cette réponse comme «acceptée», parce que j'ai continué à essayer SubSonic. – Nij

2

J'ai eu un peu d'expérience avec Gentle et je dois admettre que c'était assez inefficace avec les requêtes. Je suggère de regarder dans NHibernate, car il a une communauté riche. Il est vrai que les définitions XML sont préférées, mais il existe des façons de faire les mappages en utilisant des attributs de niveau classe. SubSonic (en particulier le 3.0 version) semble très prometteur en utilisant T4 templates. Cela devrait vous donner plus de contrôle sur la génération de code. Il peut aussi faire LINQ. N'investissez pas dans LINQ-to-SQL, car les rumeurs vont être abandonnées.

2

En supposant que le .Net 3.5 Framework est une option pour être utilisé, alors vous pouvez jeter un oeil à Entity Framework de Microsoft (publié avec .Net 3.5 Service Pack 1).Entity Framework permet la génération de classes DAL basées sur votre schéma de base de données, mais la maintenance de ces classes est cachée derrière un fichier XML qui peut rapidement et facilement être mis à jour pour tenir compte des changements de schéma par une simple commande du Visual Studio IDE.

Je travaille sur un projet où nous utilisons l'Entity Framework avec MySQL avec peu de problèmes. Le principal inconvénient de cette option est que le connecteur officiel de .Net fourni par MySQL ne supporte pas encore Entity Framework - il existe une alternative payé connue sous le nom MyDirect.Net

0

Merci à la fois Filip et Snorkpete pour vos suggestions - vos commentaires et les liens ont été utiles.

Je vais probablement essayer SubSonic en premier; ça ressemble à quelque chose que je comprendrai et je serai capable d'y aller rapidement (aujourd'hui je devrais y répondre), et j'ai été surpris de voir que MS le soutient indirectement en employant le gars qui l'écrit. T4 a aussi l'air très intéressant. Le modèle de relation d'entité semble également intéressant, et le lien vers MyDirect peut être utile dans le futur. Le seul inconvénient ici est celui de l'attente; MS a déjoué son approche dans le passé en facilitant la création de la conception initiale par glisser-déposer, puis beaucoup plus tard pour la modifier ou la tenir à jour.

Quoi qu'il en soit, merci encore une fois, et je vais essayer de garder cette question à jour.

Nij

+0

De rien. Je me suis également souvenu avoir vu un autre framework d'entité appelé LightSpeed ​​(http://www.mindscape.co.nz/products/LightSpeed/). C'est commercial avec une version gratuite limitée. Ce qui est intéressant, c'est que leur principal responsable (http://andrewpeters.net/) a été embauché par Microsoft pour travailler sur Entity Framework. –

0

J'utilise un peu de SQL pour générer des objets fortement typés sur les tables, il est basé sur un construit par Cade Bryant, mais j'ai fait quelques modifications. Le code qu'il génère n'est pas 100% compilable mais il économise beaucoup de travail de plaque de chaudière et les lacunes sont faciles à remplir (je ferais toutes les propriétés à part entière si vous étiez vous, ou portez la colère de jon skeet!)

http://NotifyURL.com/sql