Azure テーブル ストレージでエンティティを更新または作成しようとすると、「エンティティは既に存在します」または「要求入力の 1 つが範囲外です」などのエラーがスローされることがあります。そのテーブルの他のエンティティも、同じエラーをスローし続けます。iisサーバーを再起動すると、再び動作し始めるので、入力に問題はありません。なぜそれが起こっているのか、私にはわかりません。
「ContinueOnError」を含むさまざまな SaveChangesOptions を試しましたが、テーブル サービス コンテキストは、1 つのエラーが発生した後も、それ以降のすべての更新/作成でエラーをスローし続けます。
以下は、テーブル ストレージ サービス コンテキストを作成する方法に関する私のコードです。
何が問題なのか教えてください。テーブル サービス コンテキストでエラーが 1 つでも発生すると、アプリの主要な機能が動作しなくなるため、これが大きな障害となっています。
public class AudioRecordRepository : Repository<PersistedAudioRecord>, IAudioRecordRepository
{
private TableStorageServiceContext<PersistedAudioRecord> audioRecordServiceContext;
private CloudStorageAccount cloudStorageAccount;
public AudioRecordRepository(IServiceContext<PersistedAudioRecord> serviceContext)
: base(serviceContext)
{
if (RoleEnvironment.IsAvailable)
cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));
else
cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
audioRecordServiceContext = new TableStorageServiceContext<PersistedAudioRecord>(TableNames.AudioRecord, cloudStorageAccount.TableEndpoint.ToString(), cloudStorageAccount.Credentials) { IgnoreResourceNotFoundException = true };
}
public bool CreateRecord(PersistedAudioRecord record)
{
this.audioRecordServiceContext.Create(record);
this.audioRecordServiceContext.SaveChangesWithRetries(SaveChangesOptions.ContinueOnError);
return true;
}
}