栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有一对多关系的实体框架对象的序列化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有一对多关系的实体框架对象的序列化

当您看到类似的对象时:

System.Data.Entity.DynamicProxies.Tag_FF17EDDE6893000F7672649A39962DB0CA591C699DDB73E8C2A56203ED7C7B6D

它是运行时由EF生成的 代理 版本,通常称为POCO对象。

实体框架之所以创建此对象,是因为它跟踪对象的更改时间,因此在调用

.SaveChanges()
它时可以优化操作。这样做的缺点是您实际上并未使用定义的特定对象,因此数据合约和框架(Json.net)无法像使用原始POCO对象那样使用它们。

要防止EF返回此对象,您有两种选择(ATM):

首先,尝试在DbContext上关闭Proxy对象的创建。

DbContext.Configuration.ProxyCreationEnabled = false;

这将完全禁用对特定DbContext的每个查询的代理对象的创建。(这不会影响ObjectContext中的 缓存 对象)。

其次,将 Entityframework 5.0+
与AsNoTracking()一起使用 (ProxyCreationEnabled在EF 5.0中仍然可用)

您还应该能够

DbContext.Persons.AsNoTracking().FirstOrDefault();

要么

DbContext.Persons.  .Include(i => i.Parents)  .AsNoTracking()  .FirstOrDefault();

不会 全局 禁用DbContext的代理创建,而是仅在每次查询时将其关闭。(这 确实 会影响ObjectContext中的 缓存
对象,但不会缓存)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号