当我尝试在 azure 表存储上更新或创建实体时,有时会引发错误,例如“实体已存在”或“其中一个请求输入超出范围”,然后如果我尝试创建或更新一些该表上的其他实体也继续抛出相同的错误。输入没有问题,就像我重新启动iis服务器一样,它又开始工作了。我不知道为什么会这样。
我尝试了不同的 SaveChangesOptions,包括“ContinueOnError”,但表服务上下文在遇到一个错误后继续在所有进一步的更新/创建中抛出错误。
下面是我关于如何创建表存储服务上下文的代码。
请让我知道问题可能是什么,这对我来说是一个巨大的障碍,因为如果表服务上下文仅遇到一个错误,我的应用程序中的主要功能就会停止工作。
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;
}
}