Любой способ ссылаться на таблицу Entity Framework строкой context.tablename? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь создать функцию, которая кэширует все содержимое таблицы базы данных из Entity Framework в кэш Redis на основе имени таблицы, передаваемого ей из другой функции в виде строки.

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

Я попытался обратиться к контексту базы данных как к типу и адресовать его через строку, однако ни один из них не сработал. Похоже, что Entity Framework презирает отсутствие жестко закодированных имен таблиц и т. Д.

public static ViewModels.Common.Alert RedisCacheTbx(/* DatabaseContext,*/ string DatabaseTable, DateTime CacheStartTime)
{
    ViewModels.Common.Alert alert = new ViewModels.Common.Alert();
    ///Verify that this type can be disposed of for the using statement.
    //if (DatabaseContext.IsAssignableFrom(typeof(IDisposable)))
    //{
        using(InspectionEntities context = new InspectionEntities())
        {
            string tablename = String.Format("context.{0}", DatabaseTable);
            Type Table = Type.GetType(tablename);
            if (Table != null)
            {
               //var query = (from a in Table where a.date_modify > CacheStartTime select a);
            }
        }
    //}

    return alert;
}

Я получаю непреодолимую ошибку при попытке запустить код для тестирования, однако я ожидаю, что запрос будет возвращаться как обычный запрос структуры среды - то есть, в основном, как список объектов.

Основное различие между предложенным ответом и тем, который я хочу использовать, заключается в том, что я не обязательно буду знать структуру таблицы, из которой я получаю данные, - следовательно, поэтому я бы предпочел использовать для этого структуру сущностей. , так что я могу вытащить его в объект, который уже был сгенерирован EF для этой таблицы. В противном случае я столкнусь с некоторыми довольно существенными проблемами.

...