【发布时间】:2012-10-11 03:55:00
【问题描述】:
根据我的研究,我了解到调用 DbContext.Entry(someEntity) 会自动将实体附加到上下文。
但是,当我这样做时,我发现实体的状态是分离的。
谁能对此以及 DbContect.Entry 的工作原理有所了解。我正在使用 EF 5.0
谢谢。
【问题讨论】:
标签: entity-framework entity-framework-5 dbcontext
根据我的研究,我了解到调用 DbContext.Entry(someEntity) 会自动将实体附加到上下文。
但是,当我这样做时,我发现实体的状态是分离的。
谁能对此以及 DbContect.Entry 的工作原理有所了解。我正在使用 EF 5.0
谢谢。
【问题讨论】:
标签: entity-framework entity-framework-5 dbcontext
如果你想附加一个对象,你真正想要的是DbSet.Attach。 DbContext.Entry 仅向您提供有关实体的信息,并允许您更改已附加的状态。
这是来自 MSDN 的关于实体状态的 good post
【讨论】:
由于@Mark Oreta 的回答不完整:
按照他发布的link 并阅读整篇文章揭示了一些不同的信息:因此,如果您设置所需的相关 EntityState,则 DbContext.Entry(someEntity) 实际上是将实体附加到上下文。
要附加修改或添加的实体,您可以这样做:
using(var yourDbContext = new YourDbContext())
{
yourDbContext.Entry(yourEntity).State =
yourEntity.ID == 0 ?
System.Data.Entity.EntityState.Added :
System.Data.Entity.EntityState.Modified;
}
要附加未修改的实体,您可以这样做:
using(var yourDbContext = new YourDbContext())
{
yourDbContext.Entry(yourEntity).State = System.Data.Entity.EntityState.Unchanged;
}
【讨论】: