如果我在实体框架中全局禁用代理创建会有什么后果?



实体框架对其某些内部内容使用代理类,如此问题所示,我们必须禁用它,因为它会导致对象的序列化出现问题。

我的问题是,如果我在我的项目中全局禁用代理创建(以避免序列化问题)会有什么后果......???

它们主要围绕启用延迟加载,但可以为持久更改提供一些性能改进,尽管老实说,我会说这非常情境化,以呈现任何值得注意的内容。

我会对序列化实体的必要性持谨慎态度。例如,如果要从控制器/API 返回实体,我建议定义反映消费者为此目的所需的数据的 POCO 视图模型或 DTO,而不是序列化实体。这样做的关键原因是,序列化实体可能会公开比使用者需要的更多关于数据的信息,这也意味着通过网络发送的数据比所需的要多。它还可以表示数据的误导性表示,因为未预先加载的集合/引用将被 #null,那么这是否意味着它们没有数据,或者根本没有加载?

Autofac 支持集成到 EF IQueryable 操作中的.ProjectTo<T>,以简化视图模型的映射,而不是使用.Select

最新更新