2017-02-22 7 views
0

ich einen .NET-Backend für einen Xamarin iOS-App nach diesem Tutorial erstellt habe von Microsoft Azure-Portal mit: tutorialAzure Mobile Services mit .NET Backend- Es ist bereits ein Objekt in der Datenbank mit dem Namen

mich dann verwendet, eine bestehende Datenbank mit diesem neuen Backend. Wenn ich versuche, aber in mein Handy-App anmelden, in dem Protokoll nicht mit dem obigen Fehler:

There is already an object named in the database 

Die bestehende Datenbank unter einem anderen Abonnement war, die deaktiviert werden soll. Ich habe es in das neue Abonnement importiert und eingerichtet.

Ich habe Tonnen von ähnlichen Fragen hier gesehen und habe auch einige Lösungen versucht. Ich habe immer noch den Fehler.

Da ich den Namespace in dem neuen Backend geändert, habe ich dies aus einer Antwort hier auf Stackoverflow lesen:

There is a table in your data base called dbo.__MigrationHistory. The table has a column called ContextKey. The value of this column is based on your namespace. for example is "DataAccess.Migrations.Configuration". When you change the namespace, it causes duplicate table names with different namespaces. So, after you change namespace in code side, change the namespace in this table in database, too, (for all rows).

Ich vermute, dass dies ein Problem in meinem Fall sein, aber ich bin derzeit nicht in der Lage zu Zugriff auf meine Datenbank

Ich habe auch versucht, diese Lösung, die nicht funktioniert hat:

Database.SetInitializer<YourContext>(null); 

Und schließlich habe ich den update-database Befehl in der Paket Console Erweiterung i Xamarin Studio nutzen versucht, aber ich habe den Fehler :

command update-databse not found 

Ich bin mir jetzt nicht sicher, wie Sie dieses Problem lösen. Könnte mir jemand in die richtige Richtung zeigen?

Danke.

EDIT

Basierend auf der obigen Erläuterung in Bezug auf den Kontext zu ändern, ich dies bereits aktualisiert, wie in der unten stehenden Configuration.cs Klasse:

internal sealed class Configuration : DbMigrationsConfiguration<testService.Models.testserviceContext> // new namespace changed here 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     AutomaticMigrationDataLossAllowed = true; 

     SetSqlGenerator("System.Data.SqlClient", new EntityTableSqlGenerator()); 
    } 

    } 

So funktioniert dieses Update die dbo.__MigrationHistory Tisch oder muss ich noch müssen Sie einen Update-Befehl ausführen?

Antwort

0

konnte ich dieses Problem zu beheben, indem Sie die contextKey Werte für alle Zeilen in dem dbo.__MigrationHistory Wicke auf der Grundlage der Erklärung oben aus der Antwort hier durch ElnazSO question .Ich wurde am falschen Namensraum suchen, die den DbContext zeigt wurden . Anstatt also diese:

testService.Models.testserviceContext 

, die aus dieser Linie ist:

internal sealed class Configuration : DbMigrationsConfiguration<testService.Models.testserviceContext> // new namespace changed here 

ich die Werte in der Tabelle auf diese aktualisiert:

testService.Migrations.Configuration 

, die der neue Namensraum meiner Konfiguration ist Klasse.

Dies löste das Problem und ich kann mich jetzt in meine Datenbank einloggen.

Verwandte Themen