我有一个使用 Hot Towel 模板的 ASP.Net MVC SPA,即轻柔、淘汰赛、实体框架(代码优先)、durandal 等。
在我的 EF 模型中,我有一个名为“Section”的类,它具有自引用关联。每个部分都属于一个“文档”,每个部分也有一个“项目”的集合:
public class Section : CommonBase
{
...
public Guid DocumentId { get; set; }
public Document Document { get; set; }
...
public List<Item> Items { get; set; }
public Guid? ParentId { get; set; }
public Section Parent { get; set; }
public List<Section> Children { get; set; }
...
}
public class Item : CommonBase
{
...
public Guid SectionId { get; set; }
public Section Section { get; set; }
...
}
当我通过 Breeze 查询和 BreezeController 方法加载文档时,我加载了“Sections”和“Items”:
var query = breeze.EntityQuery.from(model.entitySets.document)
.where(predicate)
.expand("sections.items.cloudDriveFile, sections.cloudDriveFile")
.orderBy(model.orderByClauses.document);
return _contextProvider.Context.Documents.Where(x => x.OrganisationId == currentUser.OrganisationId);
如果我在不加载任何“项目”的情况下编辑并保存“部分”,那么一切正常。但是,当我尝试编辑和保存具有“项目”的部分时——并且我已经加载了这些“项目”(使用 BreezeController 中的 Include 或 javascript 中的 Expand)——然后我收到以下错误:
“未捕获的 TypeError:将循环结构转换为 JSON”
我正在使用对 manager.saveChanges() 的简单调用进行保存。
是否有一些我应该实施的技术或模式来避免这种循环引用错误?