DataSet ou Modèle de Données d'Entité
Veuillez nous excuser pour la question de noob que je suis de nouveau à l'intégration de données avec mes applications. J'ai essayé de trouver des réponses sur le net, mais pas encore là.
J'ai une application que je suis le développement en C# sur VS2010 qui exige/sortie de données à partir d'une base de données. Je suis en train de voir si ses un jeu de données ou Modèle de Données Entité-je besoin pour utiliser lors de la configuration d'une source de données. Ma compréhension est que c'est l'EDM qui m'a permis de traiter des tables/champs dans une base de données comme des objets, mais de toute façon il semble que je peux le faire avec un jeu de données trop.
Certaines sources expliquent que d'un jeu de données fait une copie en cache de la Base de données qui peuvent ensuite être manipulées.
Essentiellement ma question est que dois-je utiliser et quels sont les (dés)avantages de l'un sur l'autre.
- Ce sujet de LINQ to SQL, ou NHibernate, ou Micro Orm, ou tout simplement vieux ADO.net? Votre question est énorme et presque sans réponse. Une couche d'accès aux données est bien sûr un élément clé de tout piloté par les données de l'application, mais c'est beaucoup trop importante pour un sujet à couvrir en une seule SORTE de réponse. Je vous conseille d'investir dans plusieurs livres.
- À l'heure actuelle je suis en train de lire sur LINQ, mais de là à utiliser LINQ pour interroger ma base de données, j'ai besoin d'accéder à ma base de données, pour laquelle j'ai besoin de comprendre si je suis à l'utilisation du jeu ou de l'EDM. J'apprécie c'est un trop grand sujet de couvrir en une seule et unique réponse, mais je me demandais si quelqu'un pouvait me donner quelques conseils qui j'ai pu ensuite poursuivre. Merci pour votre prompte réponse.
- La seule chose que je voudrais ajouter, c'est que vous ne pouvez pas vraiment décider sur une couche d'accès aux données sans tenir compte de comment il s'intègre dans le reste de votre architecture. J'ai essayé la plupart des options et à la fin de la couche d'accès aux données je viens d'utiliser du SQL via ADO.net (il est vrai que tous les produits par l'intermédiaire d'un système de génération de code). C'est rapide, propre et n'attachez pas votre application est aujourd'hui la technologie.
- De plus, ma compréhension était ADO.NET est le dieu tout-puissant de tous les accès aux données dans .NET et que DataSet/EDF vient plus bas dans la hiérarchie. James, vous avez dit: pourquoi ne puis-je pas utiliser le bon vieux ADO.NET. Il semble que je suis très mal venu.
- Je voulais vraiment la simple utilisation de vieux ADO.Net dans le sens de simplement en utilisant les objets de connexion pour exécuter SQL. Un dataset est une abstraction sur le dessus de cela, je vous recommande simplement à l'aide de datareaders que ce sont le niveau le plus bas que vous pouvez obtenir. Tout le reste introduit une barrière entre vous et la base de données. Mais c'est juste mon avis, certaines personnes comme les poids des abstractions. Si vous êtes en utilisant une architecture de raison que du bon, mais je pense que souvent, nous les utiliser parce qu'ils sont "faciles" à obtenir - sont - ils- mais ils sont difficiles à sortir.
- Merci beaucoup James. Je vais retourner à la planche à dessin à nouveau!
- S'il vous plaît ne me laissez pas vous mettre hors de vous posez les bonnes questions - assurez-vous simplement obtenir un large éventail de réponses et de ne pas fixer sur une partie de la technologie parce que c'est à la mode ou il est facile à utiliser. EF et des ensembles de données ont évidemment leur utilisation ou ils n'existent pas. C'est juste la façon dont vous vous approchez à la question avec ces deux seules options qui ont fait de moi un commentaire!
- C'est quasiment une question ouverte. Vous pourriez ainsi demandé "j'ai une application qui a besoin de lire/écrire à partir de la base de données. Dans quelle langue dois-je utiliser?"
Vous devez vous connecter pour publier un commentaire.
Vous disposez de plusieurs options s'offrent à vous quand il s'agit de stocker et de récupérer des données vers/depuis une base de données:
Avoir utilisé pratiquement tous les DB API et de l'ORM sur Windows au cours de la dernière 20 ans, je suis très heureux avec la façon dont les FC s'annonce! EF 4.3 livré juste un couple de semaines, comprend certaines nouvelles améliorations des FC, y compris les migrations qui vous permettent de gérer les modifications apportées à votre base de données de schéma à mesure qu'il évolue. J'ai 3-4 systèmes à l'aide de EF FC au cours des deux derniers mois et je suis très heureux, c'est mon préféré de base de données relationnelle IO mécanisme à l'heure actuelle.
Si vous voulez vraiment mettre en EF FC, Je recommande fortement de Julia Lerman livre EF FC - c'est un court, bien écrit, très utile guide qui devrait vous prendra pas plus d'un jour ou deux à travailler à travers les sections principales.
Espère que cette aide.
Si vous ajoutez un LocalDB source de données à votre projet (parce que vous voulez un petit local de fichier de base de données), puis, lorsque la Source de Données de Configuration de l'Assistant s'affiche, il demande explicitement à vous de décider si vous souhaitez utiliser un ensemble de données ou de Données d'Entité de Modèle de modèle de base de données. Est-ce que la situation vous avez été confronté? C'était le problème que j'ai eu qui m'a amené à cette entrée.
Il n'est pas question que, pour une entreprise de classe de l'application ou d'un site web, vous souhaitez étudier ADO.NET ou un ORM, mais il ne permet pas de répondre à cette question, qui a à voir avec ce que sont les différences entre le fait de choisir Dataset vs Modèle de Données d'Entité dans l'assistant.
Essentiellement, le Modèle de Données d'Entité est la plus récente technologie. Si vous n'êtes pas familier avec le jeu de données, alors ce n'est probablement pas le temps de commencer à l'utiliser.
Si vous vous demandez quels sont les avantages et les inconvénients de ADO.NET (DataSet) vs EntityFramework (Entity Data Model) alors il y a une discussion qui peut aider à ADO.NET Entity Framework ou ADO.NET
EF vous lever et courir assez rapidement, mais dans mon (très limité) de l'expérience de son été une douleur à maintenir.
Qu'est-ce qui a déterminé que ce sont vos seules deux options? Il y a beaucoup plus disponibles pour vous, y compris de nombreux Formulaires.
Si votre demande est d'assurer une application d'entreprise que les requêtes deviennent complexes très bientôt. Dans un tel scénario, stockées les procédures d'économiser beaucoup de temps et sont beaucoup plus faciles à entretenir et ils fonctionnent mieux avec ADO.NET. Dans presque tous les cas, je conseille de stockage-procédures et ADO.NET. Déplacer autant de règles métier et la logique de procédures stockées que vous pouvez...beaucoup plus facile à maintenir de cette façon.
Utiliser des jeux de données (tables de données) uniquement pour récupérer et lire les données. Toutes les données qui doivent être enregistrées dans la base de données doivent être manipulées directement dans la base de données ... pas de point de le faire dans le dataset, puis en enregistrant le même. Dans un environnement multi-utilisateur, il est presque toujours préférable d'enregistrer les modifications apportées à la base de données dès que l'utilisateur a cliqué sur "enregistrer".
Vous pouvez (devez) utiliser des objets d'affaires à l'intérieur de l'application de la logique de gestion des processus.
Prenons un exemple simple de l'endroit où vous enregistrez un Contact (nom, téléphone, email, adresse, etc), puis de la récupération d'une liste de contacts ajoutés aujourd'hui...je vous suggère de faire comme suit:
1) d'Ajouter le contact - Client (web ou autre) recueille des données --> les données sont sauvegardées dans un Contact d'affaires de l'objet --> valider objet de Contact --> Appel de dépôt de la couche pour enregistrer le Contact de l'objet (l'ajout d'un dépôt de couche est utile mais pas nécessaire pour garder la couche de données abstrait à partir du client) --> Référentiel appelle de la couche de données pour enregistrer le contact de l'objet (ici un simple ADO.NET d'appel, à l'aide de la Commande objet peut être effectuée pour appeler la procédure stockée pour enregistrer le contact dans la base de données). Pas de jeu de données a été utilisé dans ce cas d'utilisation.
2) la Récupération de la liste de contacts -- Client appelle le dépôt de la couche pour obtenir la liste des contacts --> dépôt de la couche d'appeler la couche de données pour récupérer les données --> ici la liste de données est extrait sous la forme d'un jeu de données(datatable) --> retour à la datatable vers le client et permettent au client de lire les données directement à partir de datatable tout en rendant les données. Même un simple contact peut être extrait sous la forme d'un jeu de données.
P. S: ORM est presque toujours inutile. Il est presque toujours utilisé parce que certains développeurs, comme pour garder tout orienté objet...donc une couche supplémentaire est ajouté, même si elle ne fait rien d'utile (à mon humble avis).
Mais, que faire si vous avez une logique d'entreprise (procédures stockées) qui peut être utilisé dans de nombreuses applications différentes.
Donc dépend: si vous faites votre demande pour différents types d'utilisateurs avec différents backend de stockage, ou de vous faire de nombreuses applications pour les utilisateurs qui ne change pas backend de stockage si souvent.
Il est très important d'avoir l'intégrité de la base de règles indépendantes de l'application (interne ou sous-traiter)