Breeze + EF与其密钥不是标识的实体(DatabaseGeneratedOption.None)

时间:2013-12-02 19:32:21

标签: asp.net-mvc entity-framework breeze

我正在使用breeze + EF作为我的asp.net mvc 4项目spa的一部分。

当创建具有由用户设置的主键的实体(未定义为identity或computed)时,用户必须在客户端中设置此键。

通过更改客户端中该实体键的值并保存更改来编辑现有实体后:请求成功传输,服务器breeze控制器执行savebundle,一切似乎都表现为已经过时。但是更改没有保存到数据库中(使用sql配置文件显示没有调用sql语句)。在更改不属于键的属性值时执行相同的过程可按预期工作。有人有这样的问题吗?

谢谢,
叶兰

1 个答案:

答案 0 :(得分:1)

使用Breeze更改现有实体(已经附加到EntityManager的实体)的密钥是个坏主意。在这种情况下,Breeze应该抛出异常,(我刚刚为此添加了一个内部错误项)。原因在于,从“实体”的角度来看,这实际上是两个操作相结合。 (插入和删除)。

作为参考,实体框架中明确禁止此类操作。

要创建相同的效果,您需要先删除当前实体,然后插入具有相同键的新实体。