如何更新实体但在SaveChanges上插入新行?

时间:2010-07-21 13:56:37

标签: entity-framework

我有Entity1属性

Entity1.id= 1;
Entity1.a = 10;
Entity1.b = 123;
Entity1.c = 231;

我不想更改属性,而是在context.SaveChanges()上插入一个新行,不要对现有id进行更新。 我试图设置Entity1.entityKey = null但它失败了。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

EntityState

中将Added设置为ObjectStateManager
var Entity1 = context.YourEntities.Where(e => e.Id == 1).FirstOrDefault();

ObjectStateEntry osmEntry = context.ObjectStateManager.GetObjectStateEntry(Entity1);
osmEntry.ChangeState(EntityState.Added);

context.SaveChanges();

即如果您的实体已经附加到上下文中(例如,如果您之前已经提取过它)。

这将使用Id = 1'复制'实体,除非您对属性进行任何更改。