实体框架,更改EntityKey将实体留作“UnChanged”

时间:2009-09-08 14:34:40

标签: entity-framework

我有一个具有我想要更新的状态属性的实体。

我想做以下事情:

const int NEW_STATUS = 2;
myEntity.StatusReference.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS);

当传递给上下文时,尽管我改变了关系,但它的状态是“UnChanged”!这意味着保存不会被保留。

进入的实体来自不同的背景,而不是它所附着和保存的实体。

任何人都知道如何只更新entitykey并坚持下去!?

提前致谢,

大卫

1 个答案:

答案 0 :(得分:0)

你做不到。 EntityKeys被设计为映射到主键,在任何良好的数据库设计中,主键永远不会改变。如果您已将EntityKey映射到非PK的内容,请将其更改为PK。如果您的数据库设计要求更改PK,请重新考虑该设计。(在您更改问题后删除。)

添加,重新阅读问题:您是否真的想要更新实体的EntityKey ,或者您只是想更改状态属性?如果是后者,请尝试以下方法之一:

entity.Status = someStatusInstance;

...或...

entity.StatusReference.EntityKey = myEntity.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS);

如果未修改您的实体状态,则在添加/保存上下文时可能会使操作顺序错误。你需要在寻求帮助时表明这一点。