簡體   English   中英

帶有.NET后端的Azure移動服務-數據庫中已經有一個命名的對象

[英]Azure mobile services with .NET backend- There is already an object named in the database

我已經創建了使用以下微軟本教程在Azure門戶Xamarin iOS應用.NET后端: 教程

然后,我使用了具有此新后端的現有數據庫。 但是,當我嘗試登錄到移動應用程序時,登錄失敗並出現上述錯誤:

There is already an object named in the database

現有數據庫處於不同的訂閱下,該訂閱將被停用。 我將其導入到新的訂閱中並進行設置。

我在這里看到了很多類似的問題,也嘗試了一些解決方案。 我仍然有錯誤。

由於我在新的后端中更改了名稱空間,因此我從此處的StackOverflow答案中讀取了此內容:

您的數據庫中有一個名為dbo .__ MigrationHistory的表。 該表具有稱為ContextKey的列。 該列的值基於您的名稱空間。 例如“ DataAccess.Migrations.Configuration”。 更改名稱空間時,它將導致使用不同名稱空間的重復表名。 因此,在代碼端更改名稱空間后,(在所有行中)在數據庫的此表中也更改名稱空間。

我懷疑這可能是我的問題,但目前無法訪問數據庫。

我也嘗試過這種無效的解決方案:

Database.SetInitializer<YourContext>(null);

最后,我嘗試在Xamarin Studio的Package Console Extension中使用update-database命令,但出現錯誤:

command update-databse not found

我現在不確定如何解決此問題。 有人可以指出我正確的方向嗎?

謝謝。

編輯

基於上面有關更改上下文的說明,我已經在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表,還是我仍然需要運行更新命令?

我根據上面Elnaz SO問題答案的解釋更改了dbo.__MigrationHistory表中所有行的contextKey值,從而解決了這個問題 。我正在查看錯誤的名稱空間,該名稱空間指向DBContext。 所以代替這個:

testService.Models.testserviceContext 

這是從這行:

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

我將表中的值更新為此:

testService.Migrations.Configuration

這是我的Configuration類的新名稱空間。

這樣就解決了問題,現在我可以登錄數據庫了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM