2017-02-22 42 views
0

Я создал .NET бэкенд для приложения Xamarin IOS с помощью Azure портала после этого урока от Microsoft: tutorialAzure услуг мобильной связи с .NET backend- Там уже есть объект с именем в базе данных

Затем я использовал существующей базы данных, с этим новым бэкэнд. Когда я пытаюсь войти в мое мобильное приложение, однако, журнал в терпит неудачу с вышеуказанной ошибкой:

There is already an object named in the database 

Существующая база данных была под другой подписки, которая будет деактивирована. Я импортировал его в новую подписку и настроил ее.

Я видел множество подобных вопросов здесь и попробовал некоторые решения. У меня все еще есть ошибка.

Поскольку я изменил пространство имен в новом интерфейсе, я прочитал это от ответа здесь на StackOverflow:

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

Я подозреваю, что это может быть проблемой в моем случае, но я в настоящее время не в состоянии доступ к моей базе данных.

Я также попытался это решение, которое не работало:

Database.SetInitializer<YourContext>(null); 

И, наконец, я пытался использовать команду update-database в Extension в пакете консоли я Xamarin студии, но я получаю ошибку :

command update-databse not found 

Я сейчас не уверен, как решить эту проблему. Может ли кто-нибудь указать мне в правильном направлении?

Спасибо.

EDIT

Основываясь на объяснении выше относительно изменения контекста, я уже обновил это в Configuration.cs классе, как показано ниже:

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

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

    } 

Так делает это обновляют dbo.__MigrationHistory стол или я до сих пор нужно запустить команду обновления?

ответ

0

мне удалось решить эту проблему путем изменения значений contextKey для всех строк в таблице dbo.__MigrationHistory на основе объяснения выше от ответа здесь ElnazSO question .I смотрел на неправильное пространство имен, который указывал на DbContext , Таким образом, вместо этого:

testService.Models.testserviceContext 

, который от этой линии:

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

Я обновил значение в таблице это:

testService.Migrations.Configuration 

который является новым пространством имен моей конфигурации класс.

Это решило проблему, и теперь я могу войти в мою базу данных.