TableServiceContext и строго типизированное имя таблицы

#azure #azure-table-storage

#azure #azure-table-storage

Вопрос:

У меня есть DocumentDataServiceContext, производный от TableServiceContext. Внутри этого класса у меня есть следующий метод:

 public DataServiceQuery<Document> Documents
{
    get
    {
        return this.CreateQuery<Document>("Documents");
    }
}
  

Есть ли способ избавиться от строковой константы, переданной в CreateQuery, и вместо этого получить имя таблицы, используемое CloudTableClient.CreateTablesFromModel(typeof(DocumentDataServiceContext))?

Ответ №1:

Нет. В конце дня у CreateQuery() должно быть имя таблицы для запроса. Вы, конечно, можете использовать соглашение или отражение, чтобы определить, каким будет имя этой таблицы другим методом, но в какой-то момент строка должна быть передана в CreateQuery.

 public DataServiceQuery<T> CreateQueryByConvention<T>()
{
     return this.CreateQuery<T>(typeof(T).ToString());
}
  

Комментарии:

1. Я решил это, определив константу и используя ее как для CreateQuery, так и для CreateTableIfNotExist, избегая CreateTablesFromModel, который, похоже, в любом случае устарел.