实体框架:新对象的状态值

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中的另一个对象冲突

hibernate框架学习笔记4:主键生成策略对象状态

如何在实体框架中持久保存 MassTransit 状态数据?

在实体框架数据库优先方法中将默认值 1 设置为实体名称(状态)

使用 SQL Azure 从会话状态提供程序(实体框架)持续接收“超时时间已过”