添加新字段时出现 MobileServiceTableOperationError
MobileServiceTableOperationError When Adding New Field
我有一个基于离线待办事项列表示例的 Azure 移动服务项目:
具有离线数据的示例应用程序按预期工作。问题是当我想用新字段修改 ToDoItem 时。如果我使用新字段(Windows 应用程序 TodoItem class 和 AzureMobileService 应用程序 TodoItem class)修改 ToDoItem class,如下所示:
[JsonProperty(PropertyName = "NewData")]
public byte[] NewData { get; set; }
当我尝试添加新项目时:
await MobileService.SyncContext.PushAsync();
我收到错误:
A first chance exception of type 'Microsoft.WindowsAzure.MobileServices.Sync.MobileServicePushFailedException' occurred in mscorlib.dll
Additional information: Push operation has failed. See the PushResult for details.
然后PushResult出现这个错误:
{Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceTableOperationError}
据我了解,Azure 移动服务支持动态架构,因此我应该不必手动更新数据库。
知道我做错了什么吗?
我正在使用 .NET 后端。
2015 年 1 月 31 日更新
如果我修改 MobileServiceInitializer 来自:
public class MobileServiceInitializer : DropCreateDatabaseIfModelChanges<MobileServiceContext>
至:
public class MobileServiceInitializer : ClearDatabaseSchemaIfModelChanges<MobileServiceContext>
它将正确更新数据库,但当然会清除我在 table 中的所有数据。知道为什么 DropCreateDatabaseIfModelChanges 会抛出错误吗?
这可能是因为 Azure 移动服务没有删除数据库的权限。在此处查看此博客:http://blogs.msdn.com/b/writingdata_services/archive/2014/03/28/mobile-services-net-backend-initializers-and-model-updates.aspx
博客列出了两个选项,如果这是您的问题:
删除现有表 - 它具有您正在谈论的所有问题
启用代码优先迁移 - 允许您保留数据。 Code First 迁移有点棘手,因此请为此做好准备,但这是解决您的问题的一种方法。上面的博客对此进行了一些介绍,但这是在 EF 中进行迁移的更深入的演示:https://msdn.microsoft.com/en-us/data/JJ591621.aspx
我有一个基于离线待办事项列表示例的 Azure 移动服务项目:
具有离线数据的示例应用程序按预期工作。问题是当我想用新字段修改 ToDoItem 时。如果我使用新字段(Windows 应用程序 TodoItem class 和 AzureMobileService 应用程序 TodoItem class)修改 ToDoItem class,如下所示:
[JsonProperty(PropertyName = "NewData")]
public byte[] NewData { get; set; }
当我尝试添加新项目时:
await MobileService.SyncContext.PushAsync();
我收到错误:
A first chance exception of type 'Microsoft.WindowsAzure.MobileServices.Sync.MobileServicePushFailedException' occurred in mscorlib.dll
Additional information: Push operation has failed. See the PushResult for details.
然后PushResult出现这个错误:
{Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceTableOperationError}
据我了解,Azure 移动服务支持动态架构,因此我应该不必手动更新数据库。
知道我做错了什么吗?
我正在使用 .NET 后端。
2015 年 1 月 31 日更新
如果我修改 MobileServiceInitializer 来自:
public class MobileServiceInitializer : DropCreateDatabaseIfModelChanges<MobileServiceContext>
至:
public class MobileServiceInitializer : ClearDatabaseSchemaIfModelChanges<MobileServiceContext>
它将正确更新数据库,但当然会清除我在 table 中的所有数据。知道为什么 DropCreateDatabaseIfModelChanges 会抛出错误吗?
这可能是因为 Azure 移动服务没有删除数据库的权限。在此处查看此博客:http://blogs.msdn.com/b/writingdata_services/archive/2014/03/28/mobile-services-net-backend-initializers-and-model-updates.aspx
博客列出了两个选项,如果这是您的问题:
删除现有表 - 它具有您正在谈论的所有问题
启用代码优先迁移 - 允许您保留数据。 Code First 迁移有点棘手,因此请为此做好准备,但这是解决您的问题的一种方法。上面的博客对此进行了一些介绍,但这是在 EF 中进行迁移的更深入的演示:https://msdn.microsoft.com/en-us/data/JJ591621.aspx