Bonjour,
Je rencontre des difficultés pour choisir la technologie ou la méthode pour communiquer avec ma base de données. J'aimerai donc avoir un retour de votre part sur les méthodes que vous utilisez et que vous pouvez me conseiller en fonction de mes contraintes.
D'ailleurs je vais commencer avec celles-ci:
- Application WPF
- Framework .NET 3.5 et 3.5 SP1.Pas de .NET 4
- BDD PostgreSQL certainement (MySQL envisageable)
- Provider : Npgsql 2.0.11.91 (MySQL Connector 6.4.3 si MySQL)
Voici ma base (Format EDMX)
Je suis d'abord parti sur une solution utilisant EntityFramework via LinqToEntities.Hors il s'avère que j'ai de réels problèmes de performances.
J'ai testé 3 méthodes avec cette technologie:
1) Récupérer les données avec une seule requête, imbrication de .Include()
Au bout d'un moment ça bug car trop d'.Include()
2) Faire du Lazy Loading:
ça me fait trop de requêtes
3) Interroger les tables indépendamment.
.Any() n'est pas supporté et je ne sais pas comment faire pour les relation * - *. Sinon cette méthode était la plus rapide.
J'en suis donc à me demander si je n'ai pas intérêt à abandonner LinqToEntities qui n'est peut être pas assez mature sur le 3.5 SP1. Et c'est là que commence mes problèmes car je ne connais pas les technos côté C#, c'est ma 1ère application.
De ce que j'ai entendu, voilà ce qui serait envisageable:
- NHibernate (je risque d'avoir les mêmes soucis que LinqToEntities, complexe à mettre en place)
- DataTable / DataSet
- LinqToSql (Abandonné à l'heure actuelle)
- SQL simple via NpgslConnection() et NpsqlCommand()
Je pense que je vais partir sur le SQL simple, ça sera certainement un peu moins intuitif, maisje pourrais vraiment faire ce que je veux. Pensez vous que c'est une bonne idée? Avez vous des conseils ou des bonnes pratiques si je pars là dessus?
Par avance un énorme merci.
Partager