C# 如何附加和更新现有实体?

C# 如何附加和更新现有实体?,c#,entity-framework,C#,Entity Framework,我想在我的网页上构造一个断开连接的对象: var entity = new MyEntity(); entity.ID = IdFromPage; entity.Name = UpdatedNameFromPage; 将其连接到我的对象上下文,然后调用context.Save() 但是我该怎么做呢?我不想使用linq来提取这样的实体 var entityFromPage = new MyEntity(); entity.ID = IdFromPage; entity.Name = Update

我想在我的网页上构造一个断开连接的对象:

var entity = new MyEntity();
entity.ID = IdFromPage;
entity.Name = UpdatedNameFromPage;
将其连接到我的对象上下文,然后调用context.Save()

但是我该怎么做呢?我不想使用linq来提取这样的实体

var entityFromPage = new MyEntity();
entity.ID = IdFromPage;
entity.Name = UpdatedNameFromPage;

var connectedEntity = _db.MyEntities.Where(x => x.ID == IdFromPage).First();
connectedEntity.ID = entityFromPage.ID;
connectedEntity.Name = entityFromPage.Name;
因为这个脚本的第二部分可能非常庞大,我不想重新映射所有内容。我只想在ID上插入它,然后调用Save()这可能吗?

您不必这样做

如果您知道它已经存在于数据库中

objectcontext.YourEntities.Attach(entity);
objectcontext.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);       
objectcontext.SaveChanges();
(如果它是一个新实体,那么您可以将其添加到上下文中)

您不必这样做

如果您知道它已经存在于数据库中

objectcontext.YourEntities.Attach(entity);
objectcontext.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);       
objectcontext.SaveChanges();

(如果是新实体,则将其添加到上下文中)

至少必须将实体状态设置为“已修改”,否则代码无效。至少必须将实体状态设置为“已修改”,否则代码无效。