2010-07-22 35 views
1

Je dois mettre à jour (bien, réécrire vraiment) une petite application VB6 qui utilise ADO pour accéder à une base de données JET, à une application vb.net dans Visual Studio 2008.Conseil de base de données nécessaire: portage de l'application VB6/ADO/JET à VB.NET

Mes recherches suggèrent que je devrais utiliser LINQ, mais il ne semble pas possible de se connecter à JET. Si JET est maintenant obsolète, que dois-je utiliser? Ou devrais-je utiliser ADO.NET sans LINQ?

Veuillez ne pas répondre à SQL Server! - Il doit s'agir d'une application que les utilisateurs finaux peuvent facilement installer dans des environnements d'entreprise ou non, et qui ne nécessite aucune maintenance technique permanente. J'ai commencé à installer SQL Express, mais j'ai arrêté quand il a fallu au moins 2 mises à jour du système, car ce sera beaucoup trop complexe pour cette petite application.

+0

qu'est-ce que vous mettez à jour dedans, pour que vous utilisiez .net? Je sais, on devrait améliorer les outils/la technologie. Quelle est la raison d'affaires pour cela? – shahkalpesh

+0

@shahkalpesh: Je ne connais pas sa raison, mais je sais que de nombreux clients s'inquiètent des applications VB6 lorsqu'ils découvrent que MS n'est plus supportée par MS (même s'ils n'utilisent jamais le support, tout le monde se sent mieux). –

+0

Raison est seulement que j'ai été chargé de porter toutes les applications VB6 à .NET! –

Répondre

1

Jet a été déprécié mais il existe un remplacement sous la forme d'ACE (Access Database Engine).

Toutefois, en ce qui concerne l'utilisation de LINQ. Les réponses à cette question ont diverses suggestions et j'ai également lu quelque part qu'il pourrait être possible d'utiliser LINQ to DataSet pour le faire. Voici un article de blog à ce sujet: Querying DataSets – Introduction to LINQ to DataSet mais je ne trouve pas le lien vers l'endroit où j'ai lu que quelqu'un avait réussi à l'utiliser pour accéder à une base de données Access. Je suggère cependant, que s'il n'y a pas de solution claire pour l'utilisation de LINQ, l'approche pragmatique serait de s'en tenir à ADO.Net normal et attendez d'utiliser LINQ jusqu'à ce que vous soyez sûr que vous utilisez une source de données qui le supporte pleinement.

+0

À quel point remplacer ACE? Et y aura-t-il des problèmes d'installation sur les clients exécutant XP? –

+0

@SM: Je ne suis pas sûr d'avoir peur. Je crois comprendre qu'il a été développé par l'équipe Office lorsque Jet était obsolète et qu'il était censé être totalement rétrocompatible avec Jet, mais qu'il contenait de nouvelles fonctionnalités s'il était utilisé avec des fichiers .accdb plutôt qu'avec des fichiers .mdb. Depuis qu'il est sorti avec Office 2007, je suis à peu près sûr que ça fonctionnera bien sur XP. –

+0

Je suppose que c'est la meilleure solution - merci, ho1! –

1

Voici un bon outil de mise à niveau est gratuite si votre projet contient moins de 10000 lignes de code:
http://msdn.microsoft.com/en-us/vbasic/ff793478.aspx

L'approche générale, vous devez suivre, est d'abord une migration propre de VB6 à VB.NET, et faites en sorte que la version .NET fonctionne exactement comme dans VB6, puis commencez à rechercher des technologies alternatives dans .NET. Il est plus facile de convertir entre différentes technologies lorsque vous avez une application .NET fonctionnelle que d'essayer manuellement de convertir directement du code VB6 vers des alternatives dans .NET.

Voici quelques bonnes raisons de migrer d'abord au lieu d'une ré-écriture manuelle:
5 myth busting reasons for choosing automatic migration vs manual rewrite

de l'article:

même dans le pire scénario, où vous avez encore besoin de réécrire un certain partie de l'application après la phase de migration automatisée, le résultat final sera toujours une fraction du coût total et le temps.

+0

Je ne suis pas en désaccord avec votre approche suggérée, mais une fois porté, il ne sera jamais réécrit en plus 'correct' vb.net. C'est vraiment la seule occasion de réécrire l'application en utilisant des méthodes plus à jour. –

+0

Vous passerez probablement moins de temps à suivre cette approche, mais ne dites pas à votre boss qu'il est converti avant d'avoir fait la réécriture après la conversion ... – awe

+0

Merci pour le lien vers l'outil de mise à niveau. Nous n'avons pas été impressionnés par la mise à niveau automatique de VS mais je vais essayer celui-ci. –

0

Il suffit d'utiliser OleDbConnection/OleDbCommand/OleDbDataReader objets à imiter la même logique que vous avez dans le code VB6/ADO. Il fonctionnera de la même manière et ne nécessitera pas plus de dépendances que votre application existante.

+0

Donc vous pensez que je devrais continuer à utiliser JET? –

+0

Oui. JET ne cesse pas de fonctionner soudainement parce que vous avez réécrit le code client dans une langue différente. Le fait que JET existe réellement sur votre machine cible dépend de votre programme d'installation. C'est un problème que vous avez déjà résolu lors du déploiement du code VB6. –

+0

Jet 4 existe sur toutes les versions de Windows à partir de Windows 2000. La situation 64 bits est plus floue - je ne suis pas sûr que les versions 64 bits de Windows fonctionnent pour les objectifs pour lesquels Jet est utilisé (Active Directory) ou si la version 64 bits d'Access (2010) fournit un 64 -bit ACE et un Jet 64 bits. Ce dernier semble peu probable pour moi, mais je ne vois pas comment ils peuvent fournir l'accès 64 bits sans les fichiers MDB, donc ils doivent avoir créé une version 64 bits de Jet (pour autant que je sache, A2007 et A2010 font n'utilisez pas l'ACE pour interagir avec les MDB, mais utilisez Jet 4, cf: références DAO, par exemple). –