我有一个具有我想要更新的状态属性的实体。
我想做以下事情:
const int NEW_STATUS = 2;
myEntity.StatusReference.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS);
当传递给上下文时,尽管我改变了关系,但它的状态是“UnChanged”!这意味着保存不会被保留。
进入的实体来自不同的背景,而不是它所附着和保存的实体。
任何人都知道如何只更新entitykey并坚持下去!?
提前致谢,
大卫
答案 0 :(得分:0)
你做不到。 EntityKeys被设计为映射到主键,在任何良好的数据库设计中,主键永远不会改变。如果您已将EntityKey映射到非PK的内容,请将其更改为PK。如果您的数据库设计要求更改PK,请重新考虑该设计。(在您更改问题后删除。)
添加,重新阅读问题:您是否真的想要更新实体的EntityKey ,或者您只是想更改状态属性?如果是后者,请尝试以下方法之一:
entity.Status = someStatusInstance;
...或...
entity.StatusReference.EntityKey = myEntity.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS);
如果未修改您的实体状态,则在添加/保存上下文时可能会使操作顺序错误。你需要在寻求帮助时表明这一点。