2010-11-05 45 views
0

Actuellement notre DAL (Data Access Layer) interroge la base de données et nous parcourons les données résultantes pour peupler un objet (un objet par ligne) dans lequel le résultat final est une liste.C# Remplir l'objet de la base de données

Quelle est la manière la plus efficace (et la plus rapide) de peupler les objets?

Quel est le moyen le plus rapide pour extraire des données de la base de données et dans un objet spécifique conçu pour cet ensemble de résultats?

C'est C#

- EDIT

Par le plus rapide, nous entendons le plus rapide de l'ordinateur à traiter, pas la vitesse du développement.
Ceci est également une application .NET 2.0

-

+0

Quel RDBMS utilisez-vous? Serveur SQL? Oracle? Autre? –

+0

À l'heure actuelle, Firebird – Horges

+1

Pourquoi ne pas utiliser Linq-To-Sql, nHibernate ou tout autre outil ORM? –

Répondre

1

Il y a beaucoup de façons de le faire, dépend de la version de C# que vous utilisez.
Vous pouvez utiliser les éléments suivants: 1.

DataSet (.net 2.0 ci-dessus, je pense?)
2. Linq2SQL (.NET 3.5 ci-dessus)
3. EntityFramework (.NET 3.5 ci-dessus)

Par exemple d'utilisation Linq2SQL:

var result = (from t in YourTable 
       select t).ToList(); 
0

Je crois que le plus rapide (comme dans le plus rapide de développer) est LINQ to SQL.

Il fait exactement cela. Créez des classes qui représentent une liste d'attributs de chaque table. Lorsque vous y accédez, il extrait automatiquement les données de la base de données et les remplit avec des données que vous pouvez ensuite utiliser comme liste d'objets. Tout est automatisé. Vous venez d'écrire une seule ligne de code pour cela, après avoir fait la cartographie (traînés tables de la base de données à l'Linq à la cartographie SQL)

Le code peut regarder aussi simple que cela:

List<Something> yourList = YourAutomaticallyGeneratedDataContext.Something.ToList(); 

Pour Firebird, bien sûr, LINQ to SQL ne fonctionnera pas. Essayez Entity Framework à la place. NHibernate est trop d'agitation, à mon avis.

Mais puisque vous voulez que le Quickest pour traiter, je vous recommande de consulter ce site: http://ormbattle.net/ Choisissez votre arme, puis le feu. Je ne considère pas l'option avec DataReader. C'est une douleur, et peut conduire à des bugs. C'est difficile à maintenir aussi.

Ou, vérifier cette question, Best free ORM tools to use with .NET 2.0/3.5

+0

Merci Alexander mais le projet cible .NET 2.0 – Horges

+0

Édité. Découvrez la dernière rangée. C'est une référence à une question ici sur SO qui pourrait vous aider. – AlexanderMP

1

la plus efficace est de savoir comment vous faites en utilisant un avant uniquement SqlDataReader http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

nécessite beaucoup de code « plaque de la chaudière » mais donc pas le plus rapide d'écrire. J'utilise personnellement NHiberate pour cela, mais cela nécessite un apprentissage http://nhforge.org/Default.aspx

+0

Voir par exemple ce cas-test: http://www.devtoolshed.com/content/performance-benchmarks-linq-vs-sqldatareader-dataset-linq-compiled-queries-part-2 –