2013-04-02 29 views
0

我想添加一个实体到我的管理器。 经理保存在我的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); 

但是如何设置一个按键?

回答

0

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

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

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

另一种可能性是,无论哪个字段(或字段)与“isPartOfKey” = TRUE,尚未确定在调用'addEntity'前设置为非空值

+0

但如何设置'isPartOfKey'= true为我的Guid在时间戳? – spitzbuaamy

+0

如何通过fetchMetadata调用或直接通过创建entityType来定义entityType? –

0

请尝试以下操作:

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

如果要将实体创建为JavaScript模型而不是数据库,请参阅此链接以获取完整说明。 http://www.breezejs.com/samples/nodb – Apmis

相关问题