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