对于 JSON.Net,我希望对其进行配置,以便在序列化一个 Entity Framework 对象时,它将完全从已经获取的内容和 .NET 内存中执行此操作,本质上,禁用对数据库的额外访问。
我为 nHibernate 找到了一个等效的问题,但我不知道如何为 EF 解决这个问题。
最佳答案
您可以通过设置上下文配置来禁用延迟加载,也可以禁用创建代理
// Disable lazy loading
context.Configuration.LazyLoadingEnabled = false;
// Disable proxies
context.Configuration.ProxyCreationEnabled = false;
但正如其他人已经指出的那样,这是一个糟糕的设计,您应该重新考虑发送 EF 对象,而是使用 LinQ 创建 DTO。
编辑:@raderick 在另一个答案的评论中指出,这可能会产生副作用。因此,如果在序列化对象后您的上下文仍在使用,我建议将其重新打开。请记住,使用 ProxyCreationEnabled = false
创建的对象在您重新打开它时不会神奇地转换为代理。
// Reactivate lazy loading
context.Configuration.LazyLoadingEnabled = true;
关于c# - 使用 JSON.Net,如果序列化 Entity Framework 对象,则禁用对数据库的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36590352/