Laden...

Entity Framework: Verschiedene Datenbankschemen

Erstellt von m0rius vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.949 Views
m0rius Themenstarter:in
1.002 Beiträge seit 2007
vor 13 Jahren
Entity Framework: Verschiedene Datenbankschemen

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

m0rius Themenstarter:in
1.002 Beiträge seit 2007
vor 13 Jahren

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

2.891 Beiträge seit 2004
vor 13 Jahren

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

m0rius Themenstarter:in
1.002 Beiträge seit 2007
vor 13 Jahren

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

S
417 Beiträge seit 2008
vor 13 Jahren

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

m0rius Themenstarter:in
1.002 Beiträge seit 2007
vor 13 Jahren

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

S
417 Beiträge seit 2008
vor 13 Jahren

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).

m0rius Themenstarter:in
1.002 Beiträge seit 2007
vor 13 Jahren

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

S
417 Beiträge seit 2008
vor 13 Jahren

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ß

m0rius Themenstarter:in
1.002 Beiträge seit 2007
vor 13 Jahren

Hallo Sarc,

alle EntitySets 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

S
417 Beiträge seit 2008
vor 13 Jahren

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ß