2009-09-08 61 views
0

我有一个实体,我想更新状态属性。实体框架,更改EntityKey将实体留作“UnChanged”

我想做到以下几点:

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

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

实体在正在添加是从不同的上下文,其被附连到和保存的所述一个。

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

由于提前,

大卫

回答

0

你不能。 EntityKeys被设计为映射到主键,在任何好的数据库设计中,主键永远不会改变。如果你已经将你的EntityKey映射到不是PK的东西,那么将它改为PK。如果您的数据库设计需要更改PK,请重新考虑该设计。(删除你改变的问题后。)

增加,在重新阅读的问题:你居然想更新实体的的EntityKey,或者你只是想改变状态属性?如果是后者,请尝试以下之一:

entity.Status = someStatusInstance; 

......或者......

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

如果实体的状态没有改变,你可能有操作顺序错误时添加以保存上下文。您需要在寻求帮助时显示。

+0

对不起,我更新了我的文章(错字)。它的FK不是PK! :) – 2009-09-08 14:44:18

+0

后者,我试过“entity.Status = someStatusInstance”,但是这并不工作,因为实体处于与我从状态变回的状态不同的上下文中!我知道FK的价值,我想更新,所以不需要往返:) – 2009-09-08 14:47:41

+0

不知道订购是错误的..似乎是一个常见的问题,但我似乎无法找到合适的解决方案!这家伙有一个相似的问题... http://stackoverflow.com/questions/1178885/update-entitykey-reference-in-entity-framework – 2009-09-08 14:49:39