【发布时间】:2017-07-20 04:33:10
【问题描述】:
我遇到了一些问题,我猜这些问题与使用 .NET Core Web API 和 Entity Framework Core 进行自我引用有关。添加 .Includes 用于某些导航属性时,我的 Web API 开始阻塞。
我在旧的 Web API 中找到了一个解决方案,但我不知道如何为 .NET Core Web API 实现相同的东西(我仍处于早期学习阶段)。
较旧的解决方案将其粘贴在 Global.asax 的 Application_Start() 中:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
我怀疑这是在 StartUp 的 ConfigureService() 方法中处理的,但除此之外我知道的不多。
或者有没有更合适的方法来处理这个问题?
【问题讨论】:
-
一般来说,我使用没有循环的 API 对象(不是直接的 EF 对象)
-
@BradleyDotNET 我同意,将您的数据库映射到以 API 调用者为中心的连线对象。 DB over a wire 是软件开发的反模式(具有讽刺意味的是,对于许多“做 REST”的人来说,它是一个 goto 解决方案)
-
这似乎违反了 DRY 原则,因为我的线模型看起来与 EF 填充的模型相同。
-
@SailingJudo 真正的问题是他们应该这样做吗?一般来说,API 对象可以比关系数据库所需的更扁平