AWS DynamoDB - динамическая установка DynamoDBTable в модели сохраняемости объекта

У меня есть проект .NET Core 2.0 с использованием AWSDynamodDb (здесь вы можете игнорировать Dynamo db, поскольку вопрос не касается DynamodDB)

У меня есть следующий класс сущности:

[DynamoDBTable("TableName")]
public class MyData
{
    [DynamoDBHashKey]
    public string Id{ get; set; }

    public string Name{ get; set; }
}

Я хочу, чтобы "TableName" - значение, переданное в атрибут - было заполнено из моего файла appSettings.json.

 {
    "TableName": "NewTable" 
 }

Можно ли получить это значение во время выполнения, просмотрев ключ в файле appSettings?

--Обновлено--

Я вызываю класс MyData из своего контроллера, как показано ниже:

  var response = await context.ScanAsync<MyData>(conditions).GetRemainingAsync();

@ gunr2171 Да, я уже использую конфигурации в своем приложении. В Startup as: services.AddSingleton <IConfiguration> (Конфигурация). И затем в моем классе, который требует ключа как: IConfiguration _configuration; _configuration ["UserId"]. Но как я могу справиться с этим атрибутом класса?

aman 10.07.2018 21:23

@ gunr2171 должно быть в порядке, но о каких правках вы говорите. Я обновил свой код, проверьте.

aman 10.07.2018 21:28

Ой, подождите, вы говорите о попытке изменить значение атрибута [DynamoDBTable] с помощью файла конфигурации?

gunr2171 10.07.2018 21:42

@ gunr2171 да, я только что понял, что он пытается сделать, я ищу, есть ли что-нибудь вроде украшения ConfigurationPropertyAttribute, которое было доступно в .NetFramework

Ryan Wilson 10.07.2018 21:43

Спасибо за правку, я должен был прояснить это при публикации. В контроллере MVC мы могли создать собственный фильтр / атрибут, поэтому я что-то искал в этих строках. Вышеупомянутый класс вызывается в моем контроллере MVC API. Я просто не хотел жестко закодировать значения атрибутов и посмотреть, есть ли возможность получить их из appSettings.json.

aman 11.07.2018 04:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
641
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто для всех, кто сталкивался, я смог решить эту проблему, как показано ниже:

Удалите имя таблицы из модели.

А затем используйте приведенный ниже код, чтобы динамически установить имя таблицы.

    public static DynamoDBOperationConfig GetDynamoDbOperationConfig(string dynamoDbTable)
    {
        DynamoDBOperationConfig config = new DynamoDBOperationConfig() { OverrideTableName = dynamoDbTable };
        return config;
    } 

Мы можем вызывать эту функцию всякий раз, когда вызываем любую операцию с динамо-базой данных, такую ​​как сканирование, сохранение, удаление и т. д.

Другие вопросы по теме