1

我想向我的经理添加一个实体。经理保存在我的 MasterViewmodel 中,我正在处理淘汰赛。

Error: Cannot attach an object to an EntityManager without first setting its key or setting its entityType 'AutoGeneratedKeyType' property to something other than 'None'

我的代码:

var item = {           
        GuidUser: masterViewModel.UserID,
        GuidProject: ProjectID,
        Start: startTime,
        End: stopTime,
        Description: workDone,
        IdCustomer: null,
        timestampId: null,
        Charged: false,
        ToCharge: toCharge,
        };
var item2 = masterViewModel.breezeProjectManager().createEntity('Timestamp', item);
masterViewModel.breezeProjectManager().addEntity(item2);

但是如何设置密钥?

4

2 回答 2

1

尝试以下操作:

var item2 = masterViewModel.breezeProjectManager()
           .createEntity('item', { timestampId: breeze.core.getUuid() });
于 2014-03-09T13:07:12.043 回答
0

当第一次定义任何 EntityType 时,它​​应该至少有一个 DataProperty,它的“isPartOfKey”属性设置为 true。任何 EntityType 的元数据要么作为从服务器返回的元数据的结果而具体化,要么在客户端上创建。无论哪种情况,都必须先创建“EntityType”元数据,然后才能创建该类型的任何实体。

我的猜测是,当您第一次尝试创建实体时,您还没有获取元数据或创建元数据。在您的情况下,您可以在尝试创建实体之前进行 fetchMetadata 调用。IE

breezeProjectManager().metadataStore.fetchMetadata().then(function() {
   .. perform your creation and add logic here.
}

另一种可能性是,使用'isPartOfKey' = true 定义的任何一个(或多个字段)在调用'addEntity'之前都没有设置为非空值。

于 2013-04-02T17:55:48.163 回答