实体框架将代理类用于某些内部内容,如this question所示,我们必须禁用它,因为它会导致对象序列化问题。
我的问题是,如果我在项目中全局禁用ProxyCreation(以避免序列化问题) ... ???
,将会带来什么后果?答案 0 :(得分:1)
它们主要围绕启用延迟加载,但是可以为持久的更改提供一些性能改进,尽管老实说,我认为这很可能会带来任何明显的情况。
对于序列化实体的需要我会保持谨慎。例如,如果要从控制器/ API返回实体,则建议您定义POCO视图模型或DTO,以反映使用者为此目的所需的数据,而不是序列化实体。这样做的关键原因是,序列化实体可以公开比您的消费者需要更多的有关您的数据的信息,这也意味着通过网络发送的数据比需要的更多。从不急于加载的集合/引用将为#null的角度来看,它也可能代表一种误导性的数据表示形式,那么,这以后是否意味着它们没有数据,或者只是没有加载?
Autofac支持.ProjectTo<T>
,它集成到EF的IQueryable操作中,与使用.Select
相比,简化了视图模型的映射。