实习笔记-3:ef实体操作错误篇

学习笔记

1.json序列化ef实体是报错:“序列化类型为“System.Data.Entity.DynamicProxies.XXXX.... 对象时检测到循环引用。”

公司里用ef来生成实体。但是当我需要当ef构建完的实体里有其他实体的时候,比如说:在picture里有a实体。

假设一种情形:获取一个PagedList<Picture>然后在后台用json返回时,会报错:

“序列化类型为“System.Data.Entity.DynamicProxies.XXXX.... 对象时检测到循环引用。”

之所以出现这个的原因:因为这个表和另一个表是有一对多关系的,当序列化表1的时候,会找到和表2关联的字段,就会到表2中序列化,而表2中也有一个字段和表1相关联.这样.序列化就会发生这种错误!

解决方法:重新new一个对象就可以了。

 

 2.无法删除此对象,因为未在 ObjectStateManager 中找到它。

因为之前都是在别人项目上进行维护和新增需求,对ef的一些具体的细节方面了解不到位。结果就导致了我在删除ef实体的时候出现了如上错误。

出现的情景:我通过执行sql获取到了一个model,然后执行了ef.DeleteObject(model)。报错:无法删除此对象,因为未在 ObjectStateManager 中找到它。

原因:执行ef的删除操作时,model必须是ef里的对象,不能自己New一个对象(XXX model = new XXX{ NAME=“123” }),否则会报错:无法删除此对象,因为未在 ObjectStateManager 中找到它。

知道问题所在,就可以解决了:用ef获取实体的方法获取该实体然后就可以了。

 

转载于:https://www.cnblogs.com/dieaz5/p/3478890.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值