Breeze - 定义添加实体的键

时间:2013-04-02 12:31:41

标签: breeze

我想在我的经理中添加一个实体。 经理保存在我的MasterView模型中,我正在使用淘汰赛。

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);

但是如何设置密钥?

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

var item2 = masterViewModel.breezeProjectManager()
           .createEntity('item', { timestampId: breeze.core.getUuid() });

答案 1 :(得分:0)

首次定义任何EntityType时,它应该至少有一个将其'isPartOfKey'属性设置为true的DataProperty。任何EntityType的元数据都是由于从服务器返回元数据或在客户端上创建的元数据而实现的。在任何一种情况下,必须先创建“EntityType”元数据,然后才能创建该类型的任何实体。

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

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

另一种可能性是,使用'isPartOfKey'= true定义哪个字段(或多个字段),在调用'addEntity'之前尚未设置为非空值。