0

私はこの問題にしばらく取り組んできましたが、それを回避することはできません。どんな助けでも大歓迎です...

Azure Table Storage (開発用ストレージではありません) を使用して、テーブルから行を削除しようとしています:

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

Fiddler は興味深いことを明らかにしていません。

私はアイデアがありません...

繰り返しますが、どんな助けでも大歓迎です。

乾杯

4

1 に答える 1

0

削除し_ServiceContext.MergeOption = MergeOption.NoTrackingます。これによりDataServiceContext、エンティティの追跡が妨げられています。

于 2012-08-07T18:33:09.793 に答える