gpt4 book ai didi

dynamic - Web Api OData 中的服务堆栈 Redis 添加 EdmEntityObject/EdmEntityObjectCollection

转载 作者:可可西里 更新时间:2023-11-01 11:38:10 25 4
gpt4 key购买 nike

我们能够将普通的 POCO 类添加到 Service Stack Redis 客户端

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);

将products对象添加到redis缓存即可

使用dynamic web api 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”类型的未处理异常。

  1. 如何解决错误
  2. 如何将 EdmEntityObject/EdmEntityObjectCollection 的实例添加到 redis 缓存中

注意:1. 不应该使用 POCO 类2. ODataModel本身仅在运行时创建

最佳答案

System.StackOverflowException 表示您正在尝试序列化具有循环依赖关系的不可序列化对象,而这些依赖关系在任何 ServiceStack 的序列化程序中都不支持(并且在大多数其他序列化程序中也会失败)。

本质上,EF 数据模型具有循环依赖性,这使得它们不适合序列化。您应该让它们映射到可以序列化的清理 DTO,或者使用任何微型 ORM,如 OrmLiteDapper将结果集映射到干净的 POCO 模型中。

作为一个目标OrmLite确保其所有功能(包括其 Reference Support )映射到干净的断开连接的 POCO,因此它们始终是可序列化的,并且可以在服务 DTO 和其他 NoSQL 数据存储中重复使用。

关于dynamic - Web Api OData 中的服务堆栈 Redis 添加 EdmEntityObject/EdmEntityObjectCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28629630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com