Entity Framework kann databaseinformationen nicht abrufen, wenn Sie keine Berechtigung für die Master-database auf einem Web-Hosting-server haben

backgroundinformationen :

Ich habe eine 1,5 GB database auf einem Web-Hosting-server gekauft. Es gab mir nur die Erlaubnis, Zugang zur database zu bekommen.

Problem :

Datenbankverbindungsfehler

Sie können die chinesischen Schriftzeichen nicht verstehen, aber Sie kennen den Mittelwert des letzten Satzes und das ist der Schlüsselpunkt dieses Fehlers.

Grund :

Dies geschah, wenn EF versucht, databaseinformationen vom Webserver abzurufen. Wie Sie sehen können, versucht es, die Informationen der Tabellen aus der Master-database und INFORMATION_SCHEMA.TABLES view zu erhalten. Dies ist das Ding, das dieses Problem verursacht hat, weil mir kein Zugriff auf diese database gewährt wird.

Also hoffe ich, dass ich dieses Problem klar erklärte.

Umgehung :

Ich habe einen path gefunden, es zu lösen. Erstellen Sie die EF auf Ihrer eigenen lokalen database mit genau derselben databasestruktur (gleiche Tabellen, gleiche Spalten etc.) und ändern Sie dann die connectionString, um auf den Webserver zu zeigen.

Problem :

Immer wenn es Änderungen in der database gibt und Sie die EF DataContext-Struktur aktualisieren möchten, wird es immer in die Master-database gehen und diese view, um die Informationen zu erhalten, also müssen Sie die connectionString hin und her ändern. Es ist trivial geworden.

Frage :

Gibt es eine andere Möglichkeit, es zu tun? Ich habe festgestellt, dass LINQ2SQL dieses Problem nicht hat, weil es nicht automatisch Informationen aus der database abruft. Stattdessen müssen die Benutzer die Tabellen ziehen, die sie verwenden möchten.

Ich freue mich auf alle brillanten Antworten.

Prost

Sie sollten sich immer gegen lokale database entwickeln und nur die Verbindungszeichenfolge in die database ändern, wenn sie auf dem Produktionsserver bereitgestellt werden. Es gibt keinen besseren path, es zu tun.

EF hängt von der Erlaubnis ab, von der Master-database zu lesen, wenn die database zuerst verwendet wird und es gibt derzeit keine Möglichkeit, es zu vermeiden. Es wurde sogar ein Vorschlag für Data UserVoice für dieses Thema gestern erstellt.