2009-10-25 16 views
6

Je commence simplement à utiliser les projets de base de données Visual Studio et j'adore les plans de génération de données que je peux créer avec. Cependant, dans un de mes projets, j'ai besoin de remplir une table de recherche avec des valeurs spécifiques. Comme une relation de clé étrangère existe entre la table de recherche et une autre table, je ne peux pas supprimer la table de correspondance du plan de génération de données sans supprimer l'autre table du plan. Mais je ne peux pas générer de données pour l'autre table. Comment puis-je a) spécifier les données exactes que le générateur doit utiliser pour ajouter des données à la table de recherche, ou b) le générateur n'ajoute-t-il pas de nouvelles valeurs à la table, mais utilise plutôt des valeurs qui existent déjà?Création d'un plan de génération de données qui inclut des valeurs de table de recherche correctes

Merci!

Répondre

4

Voici mon point de vue sur la génération de données cohérentes dans Visual Studio 2008

L'outil de génération de données dans Visual Data Studio 2008 Edition est un excellent outil pour alimenter votre base de données avec des informations de sens à utiliser dans vos tests unitaires, mais quand Il est souvent important que votre plan de génération de données recréer un ensemble de données cohérent dans les tables clés (comme les tables de recherche utilisées dans les clés étrangères qui sont souvent reflétées comme Enums dans vos solutions C# ou VB.Net). Heureusement, l'outil de génération de données inclut le générateur séquentiel lié aux données. Ce générateur sélectionne les enregistrements de la source de données spécifiée et utilise les résultats pour remplir votre table.

Alors, comment utilisons-nous cela? Dans nos solutions de base de données, nous incluons deux bases de données - la base de données actuelle sur laquelle nous travaillons, et une base de données de datageneration. Pour les tables nous devons peupler uniformément, nous dupliquons la table & de schéma dans la base de données de datageneration (moins d'index/keys/contraintes/triggers, etc.), et puis employons le script post-déploiement pour cette base de données pour créer les enregistrements désirés . Pour réduire la duplication des scripts de remplissage, le script de post-déploiement de la base de données réelle pointe vers le script de remplissage de datagenration par un chemin relatif. Cela signifie également que ces tables contiennent les mêmes enregistrements, que vous veniez de déployer la base de données ou que vous exécutiez simplement le plan de génération de données, ce qui facilite la vie de tous les membres de l'équipe.

Full details here

1

C'est bon vieux - mais il suffit de définir le nombre de colonnes à 0 dans la table de consultation, et ne supprime pas les données existantes.

+2

Cela ne semble pas fonctionner dans Visual Studio 2010. 'La génération de données a échoué en raison de l'exception suivante: La colonne' MyForeignKeyId 'n'autorise pas DBNull.Value ..' s'est produite 1 fois (s). –

+0

Vous devez toujours conserver l'intégrité de la clé étrangère. Dans le cas de la question OP - il y a déjà des données dans la table de recherche qui ne doivent pas être supprimées. –

+0

Oui. Lors de l'exécution de votre plan de génération de données, n'effacez jamais les données existantes et définissez le nombre de lignes à insérer à zéro pour conserver les tables de domaine intactes. –