Breeze - не может создать сущность, когда PK является автоматически сгенерированным идентификатором - PullRequest
0 голосов
/ 02 сентября 2018

Я использовал CreateEntity от breeze несколько раз, когда PK таблицы является введенным пользователем значением. И несколько раз с SQL SERVER, когда PK - ИДЕНТИЧНОСТЬ. Это мой первый раз, когда я пытаюсь сделать это, когда PK - это автоматически сгенерированный идентификатор (на самом деле «последовательность») в ORACLE. Это не работает.

Сначала я проверяю, что я выбрал метаданные, затем создаю новую пустую сущность, которая будет заполнена значениями пользователем.

Мой код для createEntity (newEntity является нокаутируемой наблюдаемой):

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 framework

СПАСИБО

1 Ответ

0 голосов
/ 04 сентября 2018

Сам разобрался и теперь работает. Код для установки 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, это не заглавная "А" в Авто, это маленькая "а".

...