2012-03-26 10 views
0

Ich mache eine erste Ansatz für eine Microsoft MVC-Anwendung. Die Lösung heißt "TutorialPile", unterteilt in zwei Projekte, Domain und WebUI. Ich versuche, dem WebUI-Projekt einen Controller für das Tutorial-Objekt hinzuzufügen, und wähle die Domänenklasse und den DB-Kontext aus. Ich erhalte jedoch den Fehler: "Metadaten für TutorialPile.Tutorial können nicht abgerufen werden. Die angegebene Metadatenressource konnte nicht geladen werden."MVC Entity Framework Verbindungszeichenfolge verweist auf anderes Projekt

Wenn Sie sich online umsehen, sieht es so aus, als könnte das edmx-Objekt in der Verbindungszeichenfolge in der Datei web.config nicht gefunden werden. Ich habe die Verbindungszeichenfolge aus der app.config-Datei des Domain-Projekts kopiert, funktioniert aber immer noch nicht. Hier sind die Verbindungszeichenfolgen aus der Datei web.config.

<add name="ApplicationServices"   connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> 
<add name="TutorialPileModelContainer" connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
<add name="TutorialPileDbContext"  connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

Und hier ist die Verbindungszeichenfolge, die ich kopiert habe.

<add name="TutorialPileDBEntities"  connectionString="metadata=res://*/TutorialPile.csdl|res://*/TutorialPile.ssdl|res://*/TutorialPile.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

Alle Ideen, was ich ändern muss?

Antwort

0

Stellen Sie sicher, ...

  1. die Build-Aktion des edmx Datei auf EntityDeploy gesetzt ist (die Datei auswählen und auf das Eigenschaftenfenster gehen).
  2. Ihr WebUI-Projekt verweist auf das Domänenprojekt
  3. Bearbeiten Sie die Verbindungszeichenfolge in Ihrem WebUI-Projekt, um auf die Metadaten aus dem anderen Projekt zu verweisen. Mit * bedeutet, dass es von jeder DLL kommen kann. ABER, wenn sich Ihre edmx-Datei in einem Ordner befindet, müssen Sie die Hierarchie zuordnen.

ZB:
Pfad zu EDMX: TutorialPile.Domain/Model/TutorialPile.edmx
Verbindungszeichenfolge: res: //*/Model.TutorialPile.csdl | res: // */Model.TutorialPile.ssdl | res: //*/Model.TutorialPile.msl

Noch besser:

die documentation Sie die Assembly schlägt angeben (aus Leistungsgründen) den vollständigen Namen der Assembly mit (so etwas wie : AbenteuerWor ks, 1.0.0.0, neutral, a14f3033def15840). Ich konnte es nicht schaffen. Aber für mich funktioniert nur der Name der Baugruppe. Wenn also Ihr Domänenprojekt eine TutotialPile.Domain.dll ausgibt, können Sie Folgendes verwenden:

res: //TutorialPile.Domain/Model.TutorialPile.csdl | res: //TutorialPile.Domain/Model.TutorialPile.ssdl | res: //TutorialPile.Domain/Model.TutorialPile.msl

Verwandte Themen