gpt4 book ai didi

entity-framework - 序列化 Azure 缓存的 Entity Framework 对象

转载 作者:行者123 更新时间:2023-12-04 08:57:29 25 4
gpt4 key购买 nike

我们直接使用 Azure 缓存(而不是通过可用的 Entity Framework 包装器之一)。显然,对于分布式缓存,我们需要序列化对象。不幸的是,这会导致用于导航属性的基于延迟加载的 DbContext 代理出现问题。

我知道我们可以使用 custom serializer为了将代理映射到空集合(如果未加载)或普通对象(如果已加载),但我不确定其实现。一种可能的实现可以基于 the one used by WCF ,但我不确定 Azure 是否也能以同样的方式工作。

理想的解决方案(这就是我指向 ProxyDataContractResolver 的原因)是当序列化发生时:

  • 如果导航属性已加载,则数据将像普通集合一样被序列化,
  • 如果它们没有加载,它们就不会被序列化(我希望延迟加载在后一种情况的反序列化后恢复工作,但如果不加载也是可以接受的)。

有人以优雅的方式手动解决了这个问题吗?

提前致谢!

最佳答案

我假设,如果您想要缓存 EF 对象,则不需要对这些实体进行延迟加载或更改跟踪。

我相信这两个都是通过对象代理启用的,这会导致序列化问题(因为您不想序列化代理)。

如果禁用属性DbContext.Configuration.ProxyCreationEnabled,则实际对象(而不是代理)的序列化应该可以正常工作。当通过 WCF 返回 POCO 对象时,这通常是必需的,但对于其他序列化场景(例如本例)来说可能是相同的。

关于entity-framework - 序列化 Azure 缓存的 Entity Framework 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14124749/

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