繁体   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