我正在使用breeze + EF作为我的asp.net mvc 4项目spa的一部分。
当创建具有由用户设置的主键的实体(未定义为identity或computed)时,用户必须在客户端中设置此键。
通过更改客户端中该实体键的值并保存更改来编辑现有实体后:请求成功传输,服务器breeze控制器执行savebundle,一切似乎都表现为已经过时。但是更改没有保存到数据库中(使用sql配置文件显示没有调用sql语句)。在更改不属于键的属性值时执行相同的过程可按预期工作。有人有这样的问题吗?
谢谢,
叶兰
答案 0 :(得分:1)
使用Breeze更改现有实体(已经附加到EntityManager的实体)的密钥是个坏主意。在这种情况下,Breeze应该抛出异常,(我刚刚为此添加了一个内部错误项)。原因在于,从“实体”的角度来看,这实际上是两个操作相结合。 (插入和删除)。
作为参考,实体框架中明确禁止此类操作。
要创建相同的效果,您需要先删除当前实体,然后插入具有相同键的新实体。