oracle - Breeze - 当 PK 是自动生成的 ID 时无法创建实体
问题描述
当表的 PK 是用户输入的值时,我已经使用过几次微风的 CreateEntity。当 PK 是 IDENTITY 时,使用 SQL SERVER 有几次。当 PK 是 ORACLE 中自动生成的 ID(实际上是“序列”)时,这是我第一次尝试这样做。它不工作。
我首先检查以确保我已获取元数据,然后创建新的空实体,该实体将由用户填充值。
我的 createEntity 代码(newEntity 是可淘汰的 Observable):
function createEntity(newEntity) {
newEntity(manager.createEntity(entityNames.escctransactions, {})); <<<<< this fails
return;
}
错误:无法将类型的对象 (ESCC_TRANSACTIONS:...) 附加到 EntityManager,而无需先设置其键或将其 entityType 'AutoGeneratedKeyType' 属性设置为 'None' 以外的其他值
我知道我需要将 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 框架
谢谢
解决方案
我自己想通了,现在可以工作了。设置 AutoGeneratedKeyType 的代码如下:
var entityType = manager.metadataStore.getEntityType("ESCC_TRANSACTIONS");
entityType.autoGeneratedKeyType = "Identity";
或者这有效:
var entityType = manager.metadataStore.getEntityType("ESCC_TRANSACTIONS");
entityType.autoGeneratedKeyType = breeze.AutoGeneratedKeyType.Identity;
尽管此处有 AutoGeneratedKeyType 的 Breeze 文档:http: //breeze.github.io/doc-js/api-docs/classes/AutoGeneratedKeyType.html,但它不是 Auto 中的大写“A”,而是一个小的“a ”。
推荐阅读
- php - 如何通过 android 中的改造从 php 中检索“字符串响应”?
- jquery - 排序我的列表在 jQuery 中无法正常工作
- python - 知道 Keras 中需要多少个 LSTM 单元以及每个 LSTM 单元中有多少个单元的规则是什么?
- windows - 以编程方式绕过 WinLogon
- python - 使用 cmd 安装 pypiwin32
- java - 如何设置具有共享相互依赖关系的 gradle Java 项目?
- android - Flutter build apk 不起作用并显示 Gradle task assembleRelease failed with exit code 1
- python - 标记python的规范化
- javascript - Angular:在FormGroup中定义默认值输入FormField
- go - 如果其中一项要求是 +incompatible,则在 go.mod 中获取最新版本