12
votes

Où est ma base de données et comment puis-je le voir?

Je viens de créer une nouvelle application, ajoutée EntityFramework 5 via Nuget, créé un dBContext très basique et enregistré des données.

Où est exactement mes données et comment puis-je la voir? Le non modifié app.config code> ajouté est p>

Data Source=(localdb)\\v11.0;Initial Catalog=ImageSignature.ImageContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE


0 commentaires

3 Réponses :


10
votes

Cet article devrait répondre à votre question.

La section de configuration vous permet de spécifier une connexion par défaut usine que le code doit d'abord utiliser pour localiser une base de données à utiliser pour un le contexte. L'usine de connexion par défaut n'est utilisée que lorsque non La chaîne de connexion a été ajoutée au fichier de configuration pour un contexte.

Lorsque vous avez installé le package EF Nuget une connexion par défaut usine a été enregistré que cela pointe sur SQL Express ou localDB , selon sur lequel vous avez installé.

juger par votre configuration Il apparaît que vous utilisez une connexion à localDB, Une version minimaliste de SQL utilisée Pour le développement .

Vous pouvez essayer d'utiliser l'explorateur de serveur intégré dans Visual Studio pour accéder à cette base de données, mais, comme vous l'avez écrit, cela pourrait ne pas être visible "hors de la boîte". En tant que tel, vous devrez peut-être créer une nouvelle connexion dans l'explorateur de serveur pour voir le contenu.

EDIT:

J'ai dû reposer une vitrine VMware 8 avec VS2012 pour répondre à la question "où sur le lecteur est la base de données".

Le localdb crée MDF et ldf fichiers dans c: \ users \ \ appdata \ local \ Microsoft \ Instances locales de Microsoft SQL Server \ V11.0

Capture d'écran de mon VM

comme pour le connecter à celui-ci via le navigateur de serveur, j'ai pu voir la base de données en entrant (localdb) \ v11.0 comme adresse du serveur, puis en sélectionnant la base de données avec un nom comme le nom Nom du contexte de données de votre application (avec espace de noms).

Toutes ces informations que j'ai trouvées ici .

Veuillez noter que dans le code que vous avez posté ici , il semble que vous reconstruisez la base de données à Le début de la demande en utilisant base de données.Setinitializer (New DropcreateDatabaseways ()); . Bien sûr, cela est bon lors de la première exécution de l'application Première fois (la base de données est donc créée), mais les retéraux suivants effaceront les données et commenceront avec une nouvelle ardoise. Après avoir connecté à la base de données à l'aide de l'Explorateur de serveur, j'étais en fait incapable d'exécuter ce code, car la "base de données était déjà utilisée". Vous avez probablement besoin de reconsidérer garder la connexion ouverte sur le navigateur de serveur ou changer cette ligne de code.


5 commentaires

Pourquoi n'est-ce pas "visible hors de la boîte"? Où est-ce? est stocké dans un fichier sur mon ordinateur, non? A-t-il été lancé dans le dossier Temp peut-être? Je vais essayer d'ajouter attachdbfilename à ma chaîne de connexion comme le Darin suggère, mais j'aimerais vraiment savoir ce que ça fait.


Étant donné que j'utilise Windows 7 et SQL SQL complet pour le développement et localDD semble être installé avec VS2012 sur W8, j'ai des difficultés à vérifier. Souhaitez-vous partager comment vous a créé un dbContext très basique ?


J'ai téléchargé le pertinent de Ce gist . C'est juste une classe avec 2 champs.


En ce qui concerne votre dernier paragraphe, je voulais laisser tomber la base de données pour reconstruire toutes les signatures que j'ai modifié la fonction, alors je commençais l'appel à la fonction builddb et en ajoutant dans un qui lit et utilise réellement le Les données. J'ai trouvé que vous avez cliqué sur le DB dans le serveur-Explorer et cliquer sur "Fermer la connexion" se débarrasse généralement de ce message d'erreur. Merci pour votre aide :-)


En effet, c'est ce que je voulais dire par reconsiderant la connexion ouverte dans le navigateur de serveur . ;)



3
votes

Vous utilisez localdb code> . Le contenu pourrait être stocké dans un fichier. Vous pouvez spécifier l'emplacement à l'aide d'une chaîne de connexion:

<connectionStrings>
    <add name="ImageContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=database;Integrated Security=SSPI;AttachDBFilename=c:\work\database.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>


3 commentaires

LocalDB est une base de données de service et n'a rien à voir avec SQL Server Compact


Merci. Essayé d'ajouter cela; Il a créé le fichier db que j'ai pu se connecter en choisissant "Fichier de base de données Microsoft SQL Server" dans Server Explorer. Je peux voir la table maintenant, mais je n'arrive pas à voir son contenu.


Tout à fait éventuellement parce que la base de données est vide?



1
votes

Dans mon cas suffisait à se connecter à SQL Express -> Propriétés -> Fichiers et vérifiez la colonne de chemin dans la table des fichiers de base de données. Entrez la description de l'image ici


0 commentaires