0

我有一个可怕的嵌套实体框架结构。一个 Schedule 包含多个默认值和多个覆盖。每个默认/覆盖都有一个对计划的引用和一个“类型”。类型具有对它所属的任何默认值或覆盖的引用。这很混乱,但我认为这可能是我能做的唯一方法。

这些数据最终以 Breeze 实体的形式出现在浏览器中。在将它们保存回服务器时进行处理之前,我必须将它们转回 JSON,这毫不奇怪地触发了可怕的“未捕获的类型错误:将循环结构转换为 JSON”。

现在有许多非常好的脚本可以删除这些圆形结构。但是它们似乎都用某种占位符替换了循环引用,因此可以将它们重新创建为对象。但是当然 Entity Framework 不能识别这些,所以不能使用它们。

在这一点上,我不知道该怎么做。简单地删除循环引用而不是替换它们似乎没有帮助,因为它可能导致结构中重要数据的缺失。

我还尝试更改我的 EF 查询以仅返回具体所需的数据,但它坚持给我绝对的一切,即使延迟加载设置为 false 并且我的查询中没有 .Include 语句。但我觉得这是在解决错误的问题,因为我们一定会在某些时候想要处理复杂的数据。

有没有其他办法解决这个问题?

编辑:我通过调查对象并按名称删除圆形属性暂时解决了这个问题。但如果可能的话,我仍然想要一个通用的解决方案。

4

2 回答 2

0

不确定我是否理解这个问题。无论模型的复杂性如何,都不应使用 Breeze SaveChanges 调用遇到任何类型的循环问题。(Breeze 在序列化之前在内部解开所有实体和任何循环)。如果您看到不同的东西,那么这将是一个错误。是这样吗?

于 2013-08-05T16:46:50.970 回答
0

好像你是在序列化模式之后。在设计器屏幕的属性中找出序列化模式并将其设置为单向。这将解决您的序列化问题。希望有帮助!!!

于 2013-08-02T14:04:38.407 回答