当表的PK是用户输入的值时,我已经使用了微风的CreateEntity几次。当PK是IDENTITY时,使用SQL SERVER几次。当PK是ORACLE中的自动生成的ID(实际上是“序列”)时,这是我第一次尝试这样做。它不起作用。
我首先检查以确保已获取元数据,然后创建新的空实体,该空实体将由用户填充值。
我创建createEntity的代码(newEntity是可观察到的基因剔除):
function createEntity(newEntity) {
newEntity(manager.createEntity(entityNames.escctransactions, {})); <<<<< this fails
return;
}
错误: 无法将类型(ESCC_TRANSACTIONS:...)的对象附加到EntityManager,除非先设置其键或将其objectType的“ AutoGeneratedKeyType”属性设置为“无”以外的其他值
我知道我需要将AutoGeneratedKeyType设置为“ Identity”,但不确定如何执行此操作。在初始化元数据时尝试了此操作,但仍然收到相同的错误,因此显然不起作用:
var entyType = manager.metadataStore.getEntityType("ESCC_TRANSACTIONS");
entyType.setProperties({ AutoGeneratedKeyType: AutoGeneratedKeyType.Identity });
我已经了解了在构造函数中执行此操作的一些内容,但是我从未在JavaScript中使用过构造函数。还需要在配置中进行更改吗?
使用Breeze 1.6,Knockout.js 3.4,.NET 4.5.2框架
谢谢
答案 0 :(得分:1)
我自己弄清楚了,它现在正在工作。设置AutoGeneratedKeyType的代码如下:
var entityType = manager.metadataStore.getEntityType("ESCC_TRANSACTIONS");
entityType.autoGeneratedKeyType = "Identity";
这可行:
var entityType = manager.metadataStore.getEntityType("ESCC_TRANSACTIONS");
entityType.autoGeneratedKeyType = breeze.AutoGeneratedKeyType.Identity;
尽管这里有有关Breeze的AutoGeneratedKeyType文档: http://breeze.github.io/doc-js/api-docs/classes/AutoGeneratedKeyType.html,不是Auto中的大写字母“ A”,而是小写的“ a”。