c# - 使用 JSON.Net,如果序列化 Entity Framework 对象,则禁用对数据库的访问

标签 c# .net json entity-framework json.net

对于 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/

相关文章:

c# - 在 ResourceDictionary 文件中使用 viewbox

c# - WebBrowser 控件 - 防止右键单击

.net - 如何使用 AmazonS3.net sdk 重命名存储桶内的文件夹

c# - Entity Framework 6 和 mysql 的问题

c# - 如何将大型 SQL 脚本解析成批处理?

C# Geckofx 浏览器图像下载

c# - IronPython 脚本调试

php - 在 Div 容器中显示 JSON 字符串

javascript - Jquery,打印json值出现的次数

javascript - 如何在 Angular JS 中使用 $Routeparams 从 json 文件检索数据