[英]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.