2012-08-07 170 views
0

我一直在这个问题上工作了一段时间,只是无法绕过它。任何帮助,将不胜感激......Azure存储表 - 删除项目错误

使用Azure Table中存储(不开发存储),我只是想从一个表中删除行:

Public Sub DeleteByItemId(pairItemId As String) 
    Dim item = (From c In _ServiceContext.UserTable Where c.Id = pairItemId Select c).Single() 
    _ServiceContext.DeleteObject(item) 
    _ServiceContext.SaveChanges() 
End Sub 

这将导致一个错误:“上下文目前没有跟踪实体。“

而这种做法:

Public Sub DeleteByItemId(itemId As String) 
    Dim item = New <object type> 
    item.PartitionKey = "sandbox" 
    item.RowKey = itemId 
    _ServiceContext.AttachTo(<table name>, item, "*") 
    _ServiceContext.DeleteObject(item) 
    _ServiceContext.SaveChanges() 
End Sub 

错误与此:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    <code>InvalidInput</code> 
    <message xml:lang="en-US">One of the request inputs is not valid. 
RequestId:e37b0824-3336-4089-b6ac-2824438618f6 
Time:2012-08-07T01:37:28.2741813Z</message> 
</error> 

如何服务上下文被创建:

Public Sub New() 
    Dim storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString") 
    _ServiceContext = New OroosoUserPairedAccountDataServiceContext(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials) 
    _ServiceContext.IgnoreResourceNotFoundException = True 
    _ServiceContext.MergeOption = MergeOption.NoTracking 

    ' Create the tables 
    ' In this case, just a single table. 
    storageAccount.CreateCloudTableClient().CreateTableIfNotExist(<table name>) 
End Sub 

提琴手没有透露什么有趣的事。

我没有想法...

再次,任何帮助将不胜感激。

干杯

+0

有人编辑我的问题,把它变成一个答案,这是一个很好的提醒,它*实际上是一个问题。我将它作为注释移动到此处:您是否尝试删除'_ServiceContext.MergeOption = MergeOption.NoTracking'? – smarx 2012-08-07 03:37:29

+0

这工作。不知道该行最初来自哪里。你为什么不把这个答案放在一个答案中,以便我可以将其标记为... – 2012-08-07 16:39:06

回答

0

删除_ServiceContext.MergeOption = MergeOption.NoTracking。这是保持DataServiceContext不跟踪实体。