verwendetes Datenbanksystem: Entity Framework 4
Hallo,
ich möchte je nach Debug/Release-Einstellung verschiedene Connection Strings für meine Datenbankverbindung verwenden. Dafür verwende ich die Web.config
-Transformationen (Web.Debug.config
und Web.Release.Config
).
Nun verwenden meine Datenbanken aber verschiedene Schemen und Namen – wie kann ich das in meinem Entity Data Model bzw. in meinem Connection String berücksichtigen?
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo zusammen,
hat wirklich niemand eine Idee? Es muss doch einen Weg geben, mit dem selben EntityDataModel
auf eine lokale Datenbank zum Entwickeln zuzugreifen, ohne jede lokal ausgeführte Abfrage gegen die Online-Datenbank der Produktionsseite auszuführen ...
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Warum kannst du nicht einfach verschiedene Connectionstrings verwenden? Bei uns ist es normale Vorgehensweise, dass man lokal auf dem Entwicklungsrechner den Connectionstring anpasst. Beim Kunden im Echtsystem steht dann auch der Connectionstring der Produktivdatenbank drin.
Sorry, ich befürchte, dass ich das Problem nicht ganz verstanden habe. Daher: Was meinst du mit unterschiedlichen Schemata? Da du von der web.config redest - handelt es sich um eine Webanwendung? Welche web.config meinst du, die maschinenweite oder die der Anwendung?
Gruß,
dN!3L
Hallo dN!3L,
ja, es handelt sich hierbei um eine ASP.NET MVC 2 Anwendung.
Wenn ich den Connection String so anpasse, dass er auf meine lokale Datenbank verweist, erhalte ich diese Exception:
[b]Exception Details:[/b] System.Data.SqlClient.SqlException: Ungültiger Objektname '[TT]db325225.Recipes[/TT]'.
db325225
ist der Name der Datenbank auf meinem Server. Lokal verwende ich das Datenbankschema dbo
– hier heißt die Tabelle dbo.Recipes
.
Kann ich das Schema an irgendeiner Stelle des Connection Strings einstellen?
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Kann ich das Schema an irgendeiner Stelle des Connection Strings einstellen?
Das geht soweit ich weiss nur in der DB.
Leg dir doch einfach ein Schema 'db325225' in deiner lokalen DB an.
Danach weist du dem user den du im lokalen connectionstring verwendest, einfach dieses schema als Default-Schema zu.
Ich mache das für meine MVC3 App genauso. Klappt super.
Gruß
Daniel
Hallo Sarc,
vielen Dank für deine Antwort.
Ich habe jetzt einen Benutzer db325225
sowie ein Schema db325225
angelegt und dieses dem Benutzer als Standardschema zugewiesen. Im Connection String habe ich User ID=db325225;
eingefügt.
Trotzdem erhalte ich weiterhin die gleiche Exception wie vorher – was habe ich dabei falsch gemacht?
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Schau mal in deine *.edmx Datei deiner Entitäten.
Jeder "EntitySet"-Knoten hat das Attribut "Schema", welches du dementsprechend
anpassen musst (momentan müsste da noch dbo drin stehen).
Hallo Sarc,
dann müsste das Schema zwar offline, allerdings nicht mehr online funktionieren, oder?
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo,
also wenn du online das selbe Schema verwendst, dann müsste das schon passen.
Ich würde natürlich vorher im kleineren Rahmen (z.b. eine temporäre tabelle) testen ob das klappt, bevor du im
online betrieb probleme bekommst.
Ich verwende sowohl lokal, als auch online das gleiche Schema und hab keine Probleme.
Gruß
Hallo Sarc,
alle EntitySet
s sind bereits mit dem Schema db325225
gekennzeichnet:
<EntitySet Name="Recipes" EntityType="Model.Store.Recipes" store:Type="Tables" Schema="db325225" />
Der Name meiner Datenbank endet im Server Explorer von Visual Studio auf .dbo
, meine Online-Datenbank endet auf .db325225
. Ist das relevant?
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Ich nutze den Server Explorer eigentlich nicht im Visual Studio. Hab grade mal meine DB-Connection hinzugefügt und es endet auf dem von mir verwendeten Schema.
Evtl. ist der Server Explorer nicht aktualisiert oder du musst dich erneut anmelden.
Gruß