【问题标题】:Breeze + EF with entity whose key is not identity (DatabaseGeneratedOption.None)Breeze + EF 与密钥不是身份的实体 (DatabaseGeneratedOption.None)
【发布时间】:2013-12-02 19:32:20
【问题描述】:
我在我的 asp.net mvc 4 项目 spa 中使用微风 + EF。
当使用用户设置的主键(未定义为身份或计算)创建实体时,用户必须在客户端设置此键。
通过更改客户端中的实体键的值并保存更改来编辑现有实体后:请求传输成功,服务器微风控制器执行 savebundle 并且一切似乎都按预期运行。然而,更改并未保存到数据库中(使用 sql 配置文件显示没有调用任何 sql 语句)。在更改不属于键的属性值时执行相同的过程可以按预期工作。有人遇到过这样的问题吗?
谢谢,
伊然
【问题讨论】:
标签:
asp.net-mvc
entity-framework
breeze
【解决方案1】:
使用 Breeze 更改现有实体(已附加到 EntityManager)的键是一个坏主意。在这种情况下,Breeze 可能会抛出异常,(我刚刚为此添加了一个内部错误项)。原因是从“实体”的角度来看,这实际上是两个操作的结合。 (插入和删除)。
作为参考,实体框架内明确禁止此类操作。
要创建相同的效果,您需要先删除当前实体,然后插入具有相同键的新实体。