首页 > 解决方案 > .Net Core 3.1 EdmModel的Json序列化

问题描述

我遇到了一个问题,但我不确定它是错误还是已知行为(找不到任何东西)。

因此,我们使用了 Orleans 项目,并在我们的状态之一中存储了一个 EdmModel。问题是奥尔良在 EdmModel 的序列化过程中引发了错误(使用 Newtonsoft)。所以我想,好吧,让我们找出我在构建 Edm 时做错了什么(它是“手工”构建的,因为我们没有模型(由用户创建))。

为了检查发生了什么,我尝试自己序列化 Edm 并遇到以下情况:

Self referencing loop detected for property 'DeclaringType' with type 'Microsoft.OData.Edm.EdmEntityType'. Path 'SchemaElements[0].DeclaredKey[0]'.

所以我想,好吧。我做了一些不好的事情,这就是序列化不起作用的原因,但是在评论我的代码以缩小问题之后,我得到了以下内容:

        var model = new EdmModel();

        try
        {
            var test = JsonConvert.SerializeObject(model);
        }
        catch (Exception e)
        {
            var poney = 1;
        }

        try
        {
            var test = JsonConvert.SerializeObject(model, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
        }
        catch (Exception e)
        {
            var poney = 2;
        }

它仍然引发错误。

Self referencing loop detected for property 'Model' with type 'Microsoft.OData.Edm.Csdl.CsdlSemantics.CsdlSemanticsModel'. Path 'ReferencedModels[1].SchemaElements[0]'

第二次尝试捕获 OutOfMemory。

所以我问是否有办法将 EdmModel 序列化为 Json ?因为如果这是我们可以做的,就是将 EdmModel 存储为 Grain 状态的字符串,并在 Getter/Settter 中进行序列化/反序列化。

或者也许与 Xml?

非常感谢您的帮助和投入:)

标签: asp.net-core.net-corejson.net

解决方案


推荐阅读