6
votes

Nibernate et SQL Server 2012 localDB

est-il possible d'utiliser des bases de données locales avec NHibernate? Si oui, qu'est-ce qui devrait être installé / configuré?

Actuellement, lorsque vous essayez d'utiliser la chaîne de connexion comme Source de données = (localdb) \ v11.0; Catalogue initial = TST1; Sécurité intégrée = SSPI Lors de la création de sessionFactory, je reçois

system.data.sqlclient.sqxception: un réseau lié au réseau ou une erreur spécifique à l'instance s'est produite lors de l'établissement d'une connexion à Serveur SQL. Le serveur est introuvable ou inaccessible. Vérifier que le nom d'instance est correct et que SQL Server est configuré pour Autoriser les connexions à distance. (Fournisseur: Nommé Pipes Fournisseur, Erreur: 40 - Impossible d'ouvrir une connexion à SQL Server) ----> System.componentModel.win32Exception: Le chemin réseau n'a pas été trouvé

Cependant, je suis capable de vous connecter à (localDB) \ v11.0 via l'explorateur d'objet SQL Server et l'entité Framework fonctionne avec cette chaîne de connexion. Alors, qu'est-ce que je fais mal avec NH ou il est impossible d'utiliser localDB avec NH en ce moment?


4 commentaires

Vous devrez peut-être utiliser la syntaxe archaïque avec NH, par exemple. np: \\. \ pipe \ localdb # ABB78D50 \ TSQL \ Query - Pour certains arrière-plan, voir mssqlTips.com/sqlservertip/2694/...


Merci, cela semble fonctionner, mais je ne suis pas très heureux de créer des instances de la ligne de commande.


Faites pression sur les personnes NHibernate pour mettre à jour leur soutien de SQLLOCALDB. De plus, vous ne devriez pas créer une instance à chaque démarrage de votre programme. Vous ne pouvez pas arrêter et commencer l'instance? Une fois que vous connaissez le nom du tuyau, vous ne devriez pas avoir à le faire manuellement après cela ...


En fait, j'aimerais essayer dans mes tests, alors peut-être que j'utiliserai même l'instance par test si la performance sera ok :)


5 Réponses :


2
votes

Vous devrez peut-être utiliser la syntaxe archaïque avec NH, par exemple:

np:\\.\pipe\LOCALDB#ABB78D50\tsql\query


0 commentaires

0
votes

Assurez-vous d'installer cette mise à jour: http://support.microsoft.com/kb/2544514

Assurez-vous que la base de données est créée:

  • Utilisation de la base de données Explorer ou SQL Management Studio fait une connexion à (localdb) \ v11.0
  • Exécuter créer une base de données [dbname]
  • créer des tables si nécessaire

    Changer la chaîne de connexion à:

    source de données = (localdb) \ v11.0; catalogue initial = dbname; sécurité intégrée = true

    et exécutez le web. Cela devrait fonctionner.


0 commentaires

0
votes

J'utilise aussi jointdbfilename = | datadirectory | \ base_sase_name.mdf dans la chaîne de connexion. xxx

et myDatabase.mdf est dans app_data répertoire de l'application


0 commentaires

1
votes

Vous n'avez pas besoin d'utiliser NP: \ Comme ce type de chaîne de connexion est un gros mal de tête pour tous. L'adresse du tuyau nommé localdb change fréquemment, vous devez donc réfléchir que sur votre chaîne de connexion.

Pour utiliser NHibernate avec localDB, obtenez la dernière version de NHibernate et utilisez la chaîne de connexion suivante: P>

Server=(localdb)\v11.0;Initial Catalog=<dbname>;User ID=<user>;password=<pwd>;Integrated Security=false;AttachDBFilename=<dbfile_path><dbfilename>.mdf


0 commentaires

1
votes

Oui, il est possible de se connecter. Allez à Afficher -> Server Explorer -> Développez les connexions de données, puis cliquez avec le bouton droit de la souris sur vos propriétés. Vous verrez les zones identité, conengtion et misc. Dans la zone de connexion, vous trouverez la chaîne de connexion nécessaire au fichier .xml où NHibernate est configuré. Copiez cette chaîne sous la propriété Connection.string Like:

<property name="connection.connection_string">Data Source=(LocalDb)\v11.0;AttachDbFilename={path}\aspnet-{projectName}-20141201132517.mdf;Initial Catalog=aspnet-{projectName}-20141201132517;Integrated Security=True</property>


0 commentaires