Azure Mobile Services中的TableController更新失败

时间:2014-09-24 03:26:14

标签: azure-mobile-services

当我在tablecontroller上执行修补程序(updateasync)时,我收到以下错误:

iisexpress.exe Error: 0 : Message='The client is attempting to use optimistic concurrency in
connection with updates and inserts but the current 'SimpleMappedEntityDomainManager`2' 
implementation does not set the original version required to support this. Please implement the 
method 'SetOriginalVersion' and provide the original value.', 
Id=00000000-0000-0000-5d00-0080000000ff, Category='App.Controllers.Tables'

我正在使用MappedEntityDomainManager,因为我已经连接了一个预先存在的数据库。

查找并插入所有工作正常。

1 个答案:

答案 0 :(得分:1)

尝试使用以下方法更新SimpleMappedEntityDomainManager<TDTO, TModel>实施:

protected override void SetOriginalVersion(TModel model, byte[] version)
{
    this.context.Entry(model).OriginalValues["Version"] = version;
}

其中"Version"是模型类中属性的名称,用于存储项目的版本(通常为timestamp类型)

如果您的数据库中没有存储版本的任何属性(映射到传出DTO中的Version__version属性),那么您可以使用空覆盖:

protected override void SetOriginalVersion(TModel model, byte[] version)
{
}

我无法找到此功能的任何文档,因此我将此问题转发给产品团队以便更正。