куда вставить IgnoreResourceNotFoundException в хранилище Azure - PullRequest
2 голосов
/ 06 декабря 2011

Привет, я пытаюсь запрограммировать запрос для выбора данных по идентификатору сотрудника, но когда в таблице нет записей, я получаю сообщение об ошибке.я понимаю, что могу использовать IgnoreResourceNotFoundException = true, но я не знаю, куда вставить этот код.надеюсь, вы, ребята, можете помочь.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
using Microsoft.WindowsAzure.ServiceRuntime;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

namespace MessageBoard_Data
{
public class MessageBoardDataSource
{


private const string messageTableName = "MessageTable";
private const string connectionStringName = "DataConnectionString";
private static CloudStorageAccount storageAccount;
private CloudTableClient tableClient;
private const string messageImageBlobName = "golfermessageboardpics";
private CloudBlobClient blobClient;
private CloudBlobContainer blobContainer;
private const string messageQueueName = "golfermessageboardqueue"; 
private CloudQueueClient queueClient;
private CloudQueue queue;


public MessageBoardDataSource()
{
string connectionString = RoleEnvironment.
GetConfigurationSettingValue(connectionStringName);

storageAccount = CloudStorageAccount.Parse(connectionString);

tableClient = new CloudTableClient(storageAccount.TableEndpoint.
AbsoluteUri,storageAccount.Credentials);

tableClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
tableClient.CreateTableIfNotExist(messageTableName);



blobClient = storageAccount.CreateCloudBlobClient();
blobContainer = blobClient.GetContainerReference(messageImageBlobName);
blobContainer.CreateIfNotExist();


var permissions = blobContainer.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
blobContainer.SetPermissions(permissions);
queueClient = storageAccount.CreateCloudQueueClient();
queue = queueClient.GetQueueReference(messageQueueName);
queue.CreateIfNotExist();


}
public IEnumerable<MessageBoardEntry> GetEntriesbyid(string EmployeeID)
{
TableServiceContext tableServiceContext = tableClient.GetDataServiceContext();
tableServiceContext.IgnoreMissingProperties = true;
tableServiceContext.IgnoreResourceNotFoundException = true;
var results = from h in   tableServiceContext.CreateQuery
<MessageBoardEntry>(messageTableName)
where h.EmployeeID == EmployeeID
select h;
return results;
}

1 Ответ

0 голосов
/ 06 декабря 2011
var context = tableClient.GetDataServiceContext();
context.IgnoreMissingProperties = true;

Затем запросите контекст, как вы намереваетесь, и он будет возвращать ноль, если не найден с тех пор, когда вы запрашиваете контекст.

Обновление: Если это вновь созданныйТаблица, с которой вы можете столкнуться с известной проблемой разработки эмулятора хранилища.

Возможно, вам придется добавить фиктивный элемент в вашу таблицу перед его первым использованием, чтобы убедиться, что он знает, что такое схема.Поэтому попробуйте выполнить шаги в следующем посте: http://deeperdesign.wordpress.com/2010/03/10/azure-table-storage-what-a-pain-in-the-ass/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...