Мы можем добавить нормальный класс POCO к клиенту Service Stack RedisService Stack Redis в Web Api OData добавить EdmEntityObject/EdmEntityObjectCollection
IRedisTypedClient<Product> objRedisTypedClientNB = redisClient.As<Product>();
IRedisList<Product> objRedisListNB = objRedisTypedClientNB.Lists["Product"];
Product objNews = new Product(DateTime.Now.Ticks.ToString());
objRedisTypedClientNB.Lists["Product"].Push(objNews);
Добавление продуктов возражают REDIS кэш прекрасно
При использовании динамический веб-апи OData v4 сервис, метаданных создается во время выполнения для каждого запроса на основе URL
Как добавить EdmEntityObject/EdmEntityObjectCollection в Redis
EdmEntityObject objEntityObject = new EdmEntityObject((EdmEntityType)objEntityType);
objEntityObject.TrySetPropertyValue("Id", "test id");
IRedisTypedClient<EdmEntityObject> objRedisTypedClientEEOC = redisClient.As<EdmEntityObject>();
IRedisList<EdmEntityObject> objRedisListEEOC = objRedisTypedClientEEOC.Lists["EntityName"];
objRedisTypedClientEEOC.Lists["EntityName"].Add(objEntityObject); // throws error
Ошибка Необработанное исключение типа «System.StackOverflowException» произошло в Unknown Module.
- Как устранить ошибку
- Как добавить экземпляры EdmEntityObject/EdmEntityObjectCollection «s в кэш REDIS
Примечание: 1. Не следует использовать классы POCO 2. ODataModel сама создается в только время выполнения
В нашем случае эти классы DTO недоступны. Свойства/Метаданные создаются для каждого запроса во время выполнения с использованием ** ODataModelBuilder **. 1. Можно ли добавить DataTable, DataRow/DataSet в redis cache? 'DataTable dtb = new DataTable(); RedisClient redisClient = новый RedisClient (хост); redisClient.Set ("key", dtb); ' Это также выбрасывает ** StackOverflowException. ** 2. Как сохранить эти объекты в redis cache? 3. Ручная сериализация этих объектов в строку JSON/XML и сохранение в redis cache? Это лучший подход? – Navaneeth
@Navaneeth DataTable не являются сериализуемыми по тем же причинам. Если вы знаете о поддерживающем их сериализаторе, вы можете сериализовать их в строку и кэшировать сериализованную строку с помощью API 'SetEntry/GetEntry'. – mythz