7
votes

Cadre d'entité perdant la liaison à la chaîne de connexion dans Visual Studio

J'ai un problème dans lequel le fichier EDMX-cadre d'entité perd apparaît apparemment sa relation avec la chaîne de connexion qu'elle a été construite.

Le concepteur de mon fichier .edmx fonctionnait parfaitement - je pourrais faire "Mettre à jour à partir de la base de données" et passera toujours à l'étape de l'assistant qui me permettrait d'ajouter des tables, des procs, etc. maintenant quand je clique "Mettre à jour base de données ", je reçois le" Choisir votre connexion de données "Step où il souhaite que je sélectionne une nouvelle base de données - si je passe ces étapes, il créera une nouvelle chaîne de connexion pour moi et régénérera tous les objets comme si je commençait à partir de zéro.

Le contenu de mon fichier APP.Config est exactement comme avant le problème, mais j'ai modifié le fichier, puis revenez-le de la manière dont c'était. Je pense que la modification de ce fichier déclenche quelque chose qui me fait perdre la reliure, mais je ne peux pas comprendre ce que c'est.

La touche de chaîne de connexion dans le fichier de configuration correspond à l'attribut CDmentalContainer dans le fichier EDMX.

J'ai même essayé de tuer mon codeBase et de ré-vérifier du contrôle de la source, mais cela ne semble pas fonctionner. D'autres personnes travaillant sur la même basebase ont le même problème, il semble donc qu'il y ait quelque chose de faux quelque part dans le projet. Mais il n'y avait pas de changements pertinents dans les fichiers .csproj ou .sln - juste rien que je puisse voir n'importe où pouvant causer cela.

Des idées? La seule solution que je constate en ce moment est de supprimer et de recréer les fichiers EDMX à partir de zéro, mais j'espère définitivement trouver quelque chose de mieux.

EDIT : Si je génère une nouvelle nouvelle EDMX dans le projet, non liée à l'un des éléments existants, il semble fixer le reste. Il doit "réinitialiser" tout ce qui est génial dans le projet. Mais cela ne peut pas être une solution légitime, alors j'espère toujours quelque chose de mieux.


2 commentaires

Je ne sais pas pourquoi mais j'ai résolu le redémarrage du service MySQL


Cela reste un problème dans VS 2015.


4 Réponses :


1
votes

Si vous devez rebondir entre des environnements (par exemple Dev, Prod) lorsque ce problème est apparu et que vous exécutez différentes versions SQL Server (par exemple 2005, 2008) dans ces environnements, vous pouvez avoir des problèmes. Le numéro de version de DB est stocké quelque part dans le fichier .edmx.

Si tel est le cas, faites-moi savoir et je peux creuser les détails et répondre avec eux. Si non, je ne sais pas ce que cela pourrait être. P>

bonne chance! P>

EDIT: STRUT> Je réalise que cela n'a probablement rien à voir avec la réelle Problème, mais je voulais fournir les détails que j'ai mentionnés au cas où quelqu'un d'autre fonctionne à travers cela. L'attribut ProviderManifESTToken code> dans l'élément code> Schema code> (à l'intérieur de la .edmx) contient le numéro de version de la base de données. Notez qu'il utilise réellement l'année (par exemple 2005, 2008) au lieu du numéro de version de DB VRAI. Si vous créez un modèle sur une version et déplacez-le à une autre version, vous devez modifier manuellement le fichier pour modifier cette valeur. P>

<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
  <!-- EF Runtime content -->
  <edmx:Runtime>
    <!-- SSDL content -->
    <edmx:StorageModels>
      <Schema Namespace="..." Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
        ...
      </Schema>
    </edmx:StorageModels>
  </edmx:Runtime>
</edmx:Edmx>


1 commentaires

Tout est sur SQL 2005 et le fichier EDMX lui-même ne change pas.



2
votes

Je viens d'avoir cela et je l'ai résolu.

Le problème était que l'EDMX était utilisé comme mon dal, avec son propre projet et sa configuration Web, et le DAL a été appelé par mon projet ASP.NET (le projet par défaut de la solution) avec sa propre configuration Web.

Les configurations avaient été identiques pour les âges, mais le projet ASP.NET a été signalé sur un autre serveur (c.-à-d. La chaîne de connexion modifiée). Même si la chaîne de connexion de DAL était toujours inchangée, valide et le projet ASP.NET n'a pas été impliqué lorsque vous souhaitez "mettre à jour le modèle de la base de données" au moment de la conception, ce doit être quelque chose à voir avec le projet par défaut qui s'affronte avec elle. < / p>

J'ai changé la Connstring dans la configuration Web du projet contenant l'EDMX pour être identique au projet par défaut, et cela a fonctionné à nouveau.


0 commentaires

6
votes

Je viens d'avoir ce problème et dans ma chaîne de connexion, j'étais manquant

Nom de l'application = EntityFramework dans la source de données


1 commentaires

À un moment donné, ils semblent l'avoir changé de "app = entitéframework" à "Nom de l'application = EntityFramework".



1
votes

Une ancienne question mais je pensais poster la solution qui a travaillé pour moi pour ceux qui ont toujours ce problème. Dans mon cas, c'était simplement un problème de mot de passe. Je travaillais au test, mais la chaîne de connexion utilisait le mot de passe pour la production. Une réponse plus utile de VS pourrait être d'afficher un type de message "Connexion ou mot de passe non valide", car c'était en réalité le problème.


0 commentaires