Breeze 创建实体,本地更新
我有一个显示在页面上的测试对象列表,我希望能够使用breeze将新实体添加到此列表中 我要做的第一件事是使用以下代码从服务器中初始化当前数据:Breeze 创建实体,本地更新,breeze,Breeze,我有一个显示在页面上的测试对象列表,我希望能够使用breeze将新实体添加到此列表中 我要做的第一件事是使用以下代码从服务器中初始化当前数据: var getTestObjects = function (testObjects) { var query = EntityQuery.from('TestObject'); return manager.executeQuery(query) .then(querySucceeded)
var getTestObjects = function (testObjects) {
var query = EntityQuery.from('TestObject');
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
if (testObjects) {
testObjects(data.results);
}
datacontext.testObjects = getLocal('TestObject');
};
};
function getLocal(resource) {
var query = EntityQuery.from(resource);
return manager.executeQueryLocally(query);
}
接下来,我调用对象的Create方法:
var createTestObject = function (initialValues) {
var testObjectType = manager.metadataStore.getEntityType("TestObject");
var newTestObject = testObjectType.createEntity(initialValues);
return manager.addEntity(newTestObject);
};
datacontext.createTestObject({ name: 'test' });
datacontext.saveChanges();
所有这些都工作正常,实体被添加到数据库中,但是当我调用
datacontext.testObjects
(本地可用的实体)时,它没有新添加的项。这是可用的还是我必须再次从服务器获取数据?您的datacontext不是任何Breeze类型的实例,因此我不知道您的“datacontext.textobjects”是什么。但是如果希望entityManager中的所有本地实体,只需调用entityManager.getEntities();因此,在您的示例中,请使用:
var localEntities = manager.getEntities();
有关更多信息,请参见:还要创建新实体,OP应使用manager.createEntity('EntityName',{properties});实际上,如果testObjectType是EntityType,那么调用EntityType.createEntity方法应该可以。抱歉,我应该说得更清楚些-datacontext是我的viewmodel,因此datacontext.textobjects在本地调用manager.ExecuteQueryLocal。没有意识到getEntities的存在!非常感谢你!