6
votes

Qu'est-ce que je peux utiliser pour Access 2007 - 2010? Je suis après la liaison WPF sur les tables, etc.

J'ai une base de données héritée que tous les sites ont, il décrit un contenu spécifique dans un certain nombre de formats de catastrophe / sous-calcula / enfant. Jusqu'à présent, l'ajout / édition du contenu est le travail manuel dans les tables ou l'outil Formulaires Windows RAW SQL (j'ai construit lorsque j'ai commencé dans le travail!).

Je voudrais que l'entité framework style glisse, dépose, lier et exécuter la capacité de codage avec WPF 4.5 et .NET 4.5.

J'hésite à utiliser Nhibernate car EF5 est très simple pour aller avec, je comprends que NHibernate est plus de travail (bien que le plus rapide orm). Y a-t-il des alternatives qui fonctionnent bien? J'essaie d'éviter trop de configuration manuelle, si possible. L'éditeur n'est pas un projet obligatoire et je ne peux pas justifier beaucoup de travail supplémentaire à ce sujet - mais cela faciliterait mon travail pour les 2 prochaines années si une belle version de celle-ci était assemblée.

Tous les arguments contre l'accès, je sais vraiment bien :) - L'échange de ce type n'est pas une option pendant au moins une année.

Après avoir cherché le site Stackoverflow, je ne vois pas trop de questions en posant cela, mais des excuses si j'ai raté un bon!

MISE À JOUR: Je pense que je devrais affiner ma question légèrement aussi ce dont j'avais vraiment besoin pour obtenir quelle génération de code afin que je n'ai pas besoin de construire toutes les classes de la base de données d'accès. D'après ce que je peux voir, le travail de DAPPER est autour de l'efficacité, mais est distinct de la génération de code. Venant d'une mentalité de cadre d'entité, je peux voir où j'ai associé les tâches quelque peu dans ma pensée :). Donc, à bout de fois, est-ce que quelqu'un connaît-il un bon code général à utiliser avec accès. Cela je peux épouser de Dapper :).


0 commentaires

4 Réponses :


6
votes

Vous ne pouvez pas utiliser le cadre d'entité, car cela ne fonctionne pas avec les bases de données d'accès.

Il est possible d'utiliser NHibernate avec MS Access, bien que NH ne prend pas en charge l'accès hors de la boîte.
Vous avez besoin Nibernate.JetDriver de NHContrib et ICI sont des paramètres d'exemple pour le fichier de configuration NH.

Si je le rappelle correctement, NH contrib doit être compilé contre la version exact NH que vous utilisez, donc Vous devez probablement télécharger le code source et le compiler vous-même.

Au fur et à mesure, vous pouvez utiliser l'un des nombreux micro-ormes, par exemple, par exemple, le débordement de pile est propre DAPPER .

DAPPER est dB agnostique, il peut donc se connecter à tout y compris l'accès. Devis du site officiel:

Dapper fonctionnera avec mon fournisseur de DB?
DAPPER n'a aucun détail d'implémentation spécifique à la DB, il fonctionne à travers tous les fournisseurs d'ADO .NET y compris SQLite, SQLCE, Firebird, Oracle, MySQL et SQL Server

L'inconvénient est que, comme DAPPER est db agnostique, vous devez implémenter des trucs avantages vous-même, comme Paging .


edit:

imo dapper est dans "Assez facile à courir rapidement de cataloire". de
Jetez un coup d'œil à ceci:
(
Projet de démonstration complet ici ) < / p> xxx

Il existe deux requêtes différentes dans ce code exemple.

Le premier mappe à une liste fortement dactylographiée, par exemple Le résultat est un iEnumerable . Bien sûr, il a besoin d'un de classe qu'il peut mapper pour.

La deuxième requête renvoie un ienumerable (> = .NET 4.0) Ce qui signifie que les propriétés sont évaluées à la volée et que vous n'avez pas besoin de définir une classe avant, mais l'inconvénient est que vous perdez la sécurité de type (et IntelliSense).
Mon opinion personnelle est que la sécurité de type manquante est un drapant de l'affaire pour moi (je préfère la première syntaxe de la requête), mais peut-être que c'est quelque chose pour vous.


7 commentaires

Donc, il n'y a rien dans le assez facile à courir rapidement Catagie je devine alors? C'est une honte. Le travail n'est pas assez important / assez important pour creuser vraiment dans NHibernate, sinon, je vais allouer quelques jours à ce sujet. DAPPER pourrait s'intégrer à mon propre générateur bien paviolé. Merci pour votre aide et les liens. Il est dommage que MS Access ait été laissé de côté du parti orm par la plupart des fournisseurs de la plupart des fournisseurs, ce n'est peut-être pas un dB approprié mais ses morts populaires!


Alors que je ne l'ai pas donné assez d'heures, je ne vois aucun avantage d'utiliser Dapper pour ce que je fais - on dirait que je crée toujours toutes mes propres cours à la main pour se marier jusqu'à la base de données? Ai-je oublié le point (accepté si oui) que je suis habitué à l'aspect de la génération de code du cadre d'entité. J'essaie de travailler cela maintenant, mais cela semble comme ça.


Avec DAPPER, vous créez les cours par main, comme vous le feriez lors de l'utilisation de NHibernate. Dans les deux cas, l'outil effectue simplement le travail de cartographie du résultat de la requête aux classes. Certes, les deux outils ne sont pas en mesure de générer les classes comme il est possible avec EF.


Je pense que ce sera un projet de Mad Moments - construisez un fournisseur d'accès pour EF. Pure altruisme bien sûr, pour soulager d'autres pauvres devs qui doivent écrire pour cela :). Pourrait me prendre un moment ... merci chrétian. Je vais déranger quelqu'un d'autre maintenant! Infiniment reconnaissant.


Je viens de remarquer que si vous faites défiler au bas de la Page DAPPER officielle , il existe une liste des 3ème outils tiers. L'un d'entre eux ressemble à un générateur de code . Peut-être que vous pouvez essayer.


Et Dapper peut également créer des requêtes dynamiques (sans la nécessité de générer une classe du tout). J'ai ajouté un exemple à ma réponse, regardez-y!


DAPPER ET ASYNC?



5
votes

déteste de ressusserrer un vieil fil mais j'ai récemment effectué un projet WPF utilisant PETAPOCO, un micro-orme, avec un accès MS, donc je pensais partager ma mise en œuvre.

Ajouter un support d'accès MS à PETAPOCO, vous venez de Besoin d'ajouter quelques bits de code: P>

Ajoutez d'abord une classe AccessDataBaseType. Toutes les classes DatabaseSeType sont à la fin du fichier PETAPOCO.CS. Il suffit d'ajouter la nouvelle classe après sqlserverdatabaseType. P> xxx pré>

suivant, modifier petapoco.internal.databaseType.Resolve () pour prendre en charge l'AccessAbaseType. (Ce code suppose que vous utilisez le fournisseur JET OLDED) P>

Db = New PetaPoco.Database("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb", "System.Data.Oledb")
  • PETAPOCO suppose que vos clés principales sont des champs AutoNumber / Identity. Si vous avez un PK qui n'est pas un nombre automatique ou vous avez un PK composite, vous devrez mettre en œuvre votre propre insert & Enregistrer la logique. LI>
  • Je n'avais pas besoin de pagination dans ma demande, donc je ne l'ai donc pas impliqué. Li> ul> p>


2 commentaires

J'ai remarqué que le représentant officiel de PETAPOCO a été mis à jour avec le support d'accès MS. ( github.com/collaboratingplatypus/petapoco ) HRRMM, je voudrais penser que mon message est inspiré la nouvelle fonctionnalité. :)


@@@ identité? ou @@ identité?



0
votes

Nous utilisons Fournisseur de Frame-Frame d'entité Jet . De cette façon, nous pouvons facilement passer à une autre base de données plus tard.

Il n'a pas toutes les limitations mentionnées ci-dessus et fonctionne bien.


0 commentaires

0
votes

La chaîne de Tortuga prend pleinement en charge l'accès.

https://docevaad.github.io/chain/introduction.htm


0 commentaires