我有以下创建产品对象的JS脚本:
var entityQuery = breeze.EntityQuery,
manager = configureBreezeManager();
function configureBreezeManager() {
breeze.NamingConvention.camelCase.setAsDefault();
return new breeze.EntityManager(config.remoteServiceName);;
}
...
var createProduct = function () {
var product = manager.createEntity('Product', { name: '', description: ''});
return product;
};
和服务器后端:
public class Product{
int ProductId{get;set;}
String Name{get;set;}
String Description{get;set;}
}
问题是product
的密钥在创建时始终为-1。通过id(-1)在本地尝试产品会返回一个空结果。
如何创建实体并在需要时能够将其恢复(无需先将实体保存到服务器中)?
答案 0 :(得分:1)
我不完全确定我理解这个问题。但是当您调用 EntityManager.createEntity 时,将创建实体并将其添加到EntityManager的缓存中。
这意味着当您调用 EntityManager.getEntities 时,您将找到该实体,或者当您通过 EntityManager.executeQueryLocally 运行本地缓存查询或使用FetchStrategy查询时FetchStrategy.FromLocalCache你也会找到实体。
在执行保存之前,实体不会出现在服务器上,此时本地实体将从临时密钥更改为永久密钥。有关详细信息,请参阅此页面上的“临时密钥生成”主题:http://www.breezejs.com/documentation/extending-entities