Linq à SQL ou Linq à DataSet?
Je suis Linq monde et actuellement en train d'explorer. Je pense à propos de l'utiliser dans mon prochain projet qui implique l'interaction de base de données.
De ce que j'ai lu, je pense qu'il y a 2 manières d'interagir avec les bases de données:
- Linq to SQL
- Linq to DataSet
Maintenant, le produit que je suis au travail, ne peut pas compter sur le type de base de données. Par exemple, il peut être déployé avec SQL server/Oracle.
Maintenant mes questions sont:
- Si j'utilise Linq to SQL, suis-je coincé avec SQL server?
- Je pense que je peux utiliser Linq to DataSet pour SQL server et oracle. Mais vais-je perdre quelque chose (facilité de programmation, la performance, la fiabilité, etc) si j'utilise Linq to DataSet pour SQL server (par rapport à Linq to SQL offcourse).
source d'informationauteur Hemant
Vous devez vous connecter pour publier un commentaire.
Vous avez raison à propos de #1 - Linq to Sql ne fonctionnera que sur les bases de données SQL Server.
J'irais avec l'ADO Entity Framework si vous souhaitez la possibilité d'accéder à différentes sources de données (à l'aide de différents fournisseurs). Vous obtenez la même souplesse dans l'utilisation de POCO-comme des entités et il est assez facile d'étendre pour les plus avancés/implémentations complexes.
Sur mon projet actuel, nous sommes à l'aide de Linq to Sql et c'est très bien, mais nous avons eu un certain nombre de problèmes à surmonter. Je l'ai trouvé un peu trop simpliste à la fois en termes d'extensibilité. J'ai écrit un (meilleur) réponse concernant Linq to Sql et Entity Framework ici.
À l'égard de la question n ° 2 - je ne suis pas sûr que je vais revenir à des ensembles de données. À mon humble avis, ils sont plus une chose du passé, mais peut être utile si vous avez une bonne trousse à outils avec des contrôles spécifiques (comme Infragistics). Cependant, je trouve leurs frais généraux trop cher pour rapide de systèmes transactionnels. La mise en œuvre n'ont pas la moitié de la fonctionnalité de Linq to Sql ou dans le Cadre de l'Entité.
Pour répondre à ta première question: non, il existe d'autres implémentations de fournisseurs linq pour oracle, par exemple:
LinqToOracle
DbLinq
Le dernier appui de plusieurs bases de données, comme SqLite.
Également la caisse de la ADO.NET Entity Framework.
Vous devriez regarder dans Linq to entities. C'est le plus complet de cadre disponibles. Maintenant, c'est principalement pour SQL Server, mais vous allez avoir du support pour Oracle etc. dans le temps.
Vous n'êtes pas coincé avec SQL server uniquement. En théorie, vous pouvez construire une linq fournisseur de base de données. Il y a un projet sur codeplex pour Linq to Oracle http://www.codeplex.com/LinqToOracle. Je n'ai pas essayé moi-même.
Comment allez-vous obtenir les données dans le dataset? Je ne pense pas que vous allez récupérer l'intégralité d'une table dans un dataset? Ce serait un grave problème de performance. Si vous allez utiliser Linq to dataset, vous aurez besoin d'écrire toutes les requêtes SQL vous-même pour obtenir les données de la base de données, au lieu de laisser linq créer les requêtes sql. Ainsi vous serez le premier à interroger la base de données et ensuite d'interroger l'ensemble de données. Semble comme un double travail pour moi...
Lorsque vous utilisez Linq to SQL, vous seriez un peu coincé avec SQL Server, pour autant que je sais.
Si vous utilisez Linq to DataSet, vous perdrez un peu de la facilité de programmation: Avec Linq, vous pouvez utiliser Linq entités directement, tandis qu'avec des ensembles de données, vous devez continuer à utiliser le nom de jeu de données (MyDataSet.Entité = new MyDataSet.Entité()), qui se fait vieux après un certain temps. Je pense que c'est le seul sacrifice.
Cependant, vous pouvez l'utiliser avec, par exemple, Oracle (l'a fait sur un projet). Il est également assez bien le glisser-déposer avec un peu plus de contrôle sur le DataAdapter (autant que je sache - je n'ai jamais eu à retoucher Linq-to-SQL tant que ça), vous pouvez spécifier (par exemple) les requêtes à utiliser, etc.
Puisque vous pouvez toujours définir des relations entre les tables dans les ensembles de données, vous pouvez toujours utiliser Linq assez bien, donc vous n'aurez pas vraiment de voir des problèmes là.
Je suppose que la fiabilité est aussi bon avec Linq-to-données avec Linq-to-SQL (jamais eu de problèmes), la performance semble être assez bon, n'a jamais pu vraiment de profil, bien que.
Vous n'êtes pas coincé à SQL Server uniquement.
Nous vous proposons de LINQ to SQL implémentations pour Oracle, MySQL, PostgreSQL et SQLite serveurs.
Obtenir plus d'informations ici
Les jeux de données sont pas si facile, en comparaison avec LINQ to SQL de la technologie.
Découvrez l'Entité Cadre de l'option comme une alternative.
Vous êtes capable d'écrire de stockage de plusieurs modèles, avec un modèle conceptuel et ensuite utiliser SQL Server et Oracle base de données en parallèle.