我们直接使用 Azure 缓存(而不是通过可用的实体框架包装器之一)。显然,对于分布式缓存,我们需要序列化对象。不幸的是,这会导致用于导航属性的基于 DbContext 的延迟加载代理出现问题。
我看到我们可以使用自定义序列化程序将代理映射到空集合(如果未加载)或普通对象(如果已加载),但我不确定实现。一种可能的实现可以基于WCF 使用的实现,但我不确定 Azure 的工作方式是否相同。
理想的解决方案(这就是我指向 ProxyDataContractResolver 的原因)是在序列化发生时:
- 如果导航属性已经加载,数据将被序列化,就好像它是一个普通的集合一样,
- 如果它们没有被加载,它们将不会被序列化(对于后一种情况,我希望延迟加载在反序列化后恢复工作,但如果不加载也是可以接受的)。
有没有人以优雅的方式手动解决了这个问题?
提前致谢!