web-dev-qa-db-fra.com

ADO.NET | DataDirectory | où est-ce documenté?

Dans AppConfig, il est possible d'utiliser |DataDirectory| mais je ne trouve aucun doc?

60
programmernovice

|DataDirectory| est une chaîne de substitution pour que vous puissiez configurer l'emplacement de votre fichier de base de données séparément.

Donc au lieu de:

SqlConnection c = new SqlConnection (
   @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");

vous procédez comme suit:

// Set |DataDirectory| value
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");

// SQL Connection String with |DataDirectory| substitution string
SqlConnection c = new SqlConnection (
   @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");
77
Alex

Dans les forums sociaux MSDN this réponse peut être trouvée

| DataDirectory | (entourée de symboles de tuyau) est une chaîne de substitution qui indique le chemin d'accès à la base de données. Il élimine la nécessité de coder en dur le chemin d'accès complet, ce qui entraîne plusieurs problèmes, car le chemin d'accès complet à la base de données peut être sérialisé à différents endroits. DataDirectory facilite également le partage d'un projet et le déploiement d'une application.

Par exemple, au lieu d'avoir la chaîne de connexion suivante:

"Data Source= c:\program files\MyApp\Mydb.sdf"

À l'aide de DataDirectory, vous pouvez avoir la chaîne de connexion suivante:

“Data Source = |DataDirectory|\Mydb.sdf”

Pour définir la propriété DataDirectory, appelez la méthode AppDomain.SetData. Si vous ne définissez pas la propriété DataDirectory, les règles par défaut suivantes seront appliquées pour accéder au dossier de la base de données:

  • Pour les applications qui sont placées dans un dossier sur l'ordinateur de l'utilisateur, le dossier de base de données utilise le dossier d'application.
  • Pour les applications qui s'exécutent sous ClickOnce, le dossier de base de données utilise le dossier de données spécifique qui est créé.
15
MRG

Les gars incorrects! Le | DataDirectory | fait référence au répertoire mssql\data pour lequel votre instance est configurée.

Ainsi, par exemple, j'utilise la discordance de Visual Studio 2012 avec SQL Express. | DataDirectory | place tous les fichiers MDF sous C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA où mon sql express a été installé et non mon dossier de solutions app_data.

Le fichier porte également le nom MVCMovie.Models.MovieDBContext et non Movies.mdf comme spécifié dans mon site Web.config.

Je pense qu'il doit être configuré quelque part dans Visual Studio pour qu'il soit placé correctement sous app_data.

8
Paul Ford

Il existe une classe interne appelée SqlConnectionHelper qui analyse cela et crée le MDF si nécessaire).

Voici le seul document MS que je peux trouver sur cette classe et le | DataDirectory | macro: http://msdn.Microsoft.com/en-us/library/aa478948.aspx .

4
codekaizen

http://msdn.Microsoft.com/en-us/library/aa478948.aspx

Le | DataDirectory | partie de la chaîne de connexion spécifie que le fichier MDF se trouve dans le répertoire App_Data.

4
Joe.P

Cela peut être pertinent si vous utilisez les premières migrations de code.

Avec VisualStudio 2013 (au moins) lors de l'exécution d'une commande Update-Database, le répertoire de données est relatif par rapport au "Projet de démarrage" actuellement configuré dans Visual Studio.

Même si vous exécutez la mise à jour de la base de données sur un autre projet (tel que sélectionné dans la console du gestionnaire de packages), elle créera votre base de données sur l'App_Data du projet de démarrage actuellement sélectionné.

3
tggm