Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Entity Framework: Verschiedene Datenbankschemen
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

Themenstarter:

Entity Framework: Verschiedene Datenbankschemen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 3138

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von m0rius am .
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
Sarc
myCSharp.de - Member



Dabei seit:
Beiträge: 426

beantworten | zitieren | melden

Zitat von m0rius
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
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Sarc
myCSharp.de - Member



Dabei seit:
Beiträge: 426

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Sarc
myCSharp.de - Member



Dabei seit:
Beiträge: 426

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Sarc
myCSharp.de - Member



Dabei seit:
Beiträge: 426

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers