【发布时间】:2017-05-06 05:31:09
【问题描述】:
这是我的情况。我将 Entity Framework 4 与 Web API 一起使用
我的代码结构非常简单,我有服务层,我的所有休息 API 都组织在那里,我有我的业务逻辑层,我有业务控制器来管理休息调用和数据层之间的事务。最后,我有一个带有 generic 存储库的数据层和一个 DAO 来访问整个事物。
在我的业务控制器中,我使用 using 来注入非事务性(只读方法)或事务性(CRUD 方法)DbContext。
将值返回到我的 REST API 时,我将其解析为 JSON。
问题是我一直有这个异常:Newtonsoft.Json.JsonSerializationException
我在 using{} 语句外部返回我的实体/集合/列表,我认为 EF 默认不喜欢这些。
在调试模式下,有时我会设法检索所有数据,但不是一直。由于我的实体来自 DbContext 中的查询,因此我认为行为是在处理完上下文后删除加载的子属性。
事实是,我想保持我的结构不变,我想知道以下几点:
有没有办法在离开 using{} 语句后返回完整(非延迟加载)实体?
非常感谢
【问题讨论】:
-
在 using 语句之后 DBContext 已经关闭,所以你不能对它做任何事情而不抛出异常。
-
您是否从 JsonSerializationException 中获得了更多信息?例如,如果您的实体相互引用,您是否会在序列化过程中陷入无限循环?
标签: entity-framework asp.net-web-api entity-framework-4 lazy-loading