2010-11-18 7 views
0

Ich suche nach vorgefertigten EF-Ansichten pro http://msdn.microsoft.com/en-us/library/bb896240.aspx, um Ladezeit zu beschleunigen. Das funktioniert in meiner lokalen Umgebung gut und ich habe Verbindungszeichenfolgen, die etwas in der Form von "metadata = ~/bin/Models \ DSManagedCoModel.csdl | ~/bin/Modelle \ DSManagedCoModel.ssdl | ~/bin/Models \ DSManagedCoModel enthalten. msl ". Wenn ich mit localhost debugge, funktionierte es großartig. Wenn ich es dann mit 127.0.0.1 versuchte, gab es einen Fehler "Der angegebene Metadatenpfad ist nicht gültig". Ich habe dies für 127.0.0.1 behoben, indem ich ein Build-Ereignis hinzugefügt habe, das die Dateien in das Azure-Verzeichnis des Cloud-Projekts bin (eigentlich den Unterordner Models) kopiert. Wenn ich versuche, in Azure zu veröffentlichen, erhalte ich jedoch eine ähnliche Meldung "Der angegebene Metadatenpfad ist nicht gültig". Ist es möglich, vorgenerierte EF-Ansichten mit Azure zu verwenden? Wie?Vorgenerierte Entity Framework-Ansichten in Azure?

Antwort

1

Ich würde empfehlen, die CSDL usw. als Ressourcen einzubetten, anstatt sie als Dateien zu behalten. Fügen Sie Ihrem Projekt die CSDL-Dateien usw. hinzu und geben Sie als Build-Aktion "Embedded Resoruce" an. Dann können Sie tun:

metadata="res://MyAssembly.dll/MyAssembly.bin.Models.DSManagedCoModel.csdl| //etc. 

Use Reflector to discover the true resource name. I wrote an article on connect strings which should help.

Beachten Sie, dass diese Dateien nicht die vorgenerierten Ansichten sind; Sie sind nur das Modell. Sie benötigen sie jedoch, um die Ansichten mit EDMGen zu generieren.

+0

Craig, es ist eine Ehre, Sie antworten zu haben. Dein Blog und deine Antworten hier auf SO sind eine gewaltige Quelle ... Das hat mich näher gebracht ... das erste Mal, dass etwas gesagt hat, dass ich die Ressource nicht gefunden habe. Dann, als ich den res: // */Trick probierte, findet es es, aber sagt "der Name des EntityContainer muss einzigartig sein". Es ist einzigartig in Edmx-Dateien (ich habe mehrere), aber ich bemerke, dass meine Edmx enthält einen Abschnitt markiert , die die Informationen von oben wiederholt. Scheint wie ein Hinweis ... – Vince

+0

Wenn Sie separate CSDL/MSL/SSDL-Dateien verwenden, wird das EDMX nicht mehr verwendet (außer als Quelle für die oben genannten) und sollte nicht zur Laufzeit referenziert werden. –

+0

Bei genauerer Betrachtung sind die Inhalte der CSDL (und der anderen Dateien) klar in das EDMX eingebettet. Tatsächlich scheinen sie identisch zu sein. Ich nehme an, der eine oder andere sollte entfernt werden? Zu Ihrer Information: Ich habe EntityDeploy als meine EDMX-Build-Aktion und Embedded Resource (nicht kopieren) für die CSDL & verwandte Dateien. – Vince

Verwandte Themen