实体框架:新对象的状态值
Posted
技术标签:
【中文标题】实体框架:新对象的状态值【英文标题】:Entity framework : The state value of a new object 【发布时间】:2014-11-30 00:19:42 【问题描述】:我正在使用 vb.net 和实体框架。 我添加了一个新对象(Myobject),在调用 savechanges 之前,我尝试修改它。 之后我检查 context.entry(Myobject).state,结果是 EntityState.Modified。 但这是一个新纪录。为什么状态不是 Entitystate.Added ? 谢谢!
【问题讨论】:
【参考方案1】:来自documentation
已添加: 对象是新的,已添加到对象上下文中,并且尚未调用 SaveChanges 方法。保存更改后,对象状态更改为未更改。处于已添加状态的对象在 ObjectStateEntry 中没有原始值。
你可以像这样使用EntityState.Added
using (var context = new BloggingContext())
var blog = new Blog Name = "ADO.NET Blog" ;
context.Entry(blog).State = EntityState.Added;
context.SaveChanges();
【讨论】:
我想在这两条指令之后找到并使用 context.entry(Myobject).state :1)添加对象 2)修改它。更改尚未保存(未调用 Savechanges)。在这两个指令之后,我检查状态值并且是 Entitystate.modified。但我认为它应该是 EntityState.Added。 (因为我已经添加了新对象,但还没有保存,在保存这个新对象之前被修改了)。以上是关于实体框架:新对象的状态值的主要内容,如果未能解决你的问题,请参考以下文章
实体框架出错:AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突
如何在实体框架中持久保存 MassTransit 状态数据?