以下代码按预期从我的数据库返回单个记录。但是,它无法跟踪UI中的更改。我正在使用angularjs将myObject的属性绑定到各个字段。一切都初始加载正常,但如果我对对象进行更改并使用breeze的EntityManager.saveChanges(),它不会检测到任何更改。我可以创建一个新实体并保存它,但试图了解如何处理更新。在检索实体后,是否需要分离实体,然后重新附加并保存?
或者这是将检索到的实体分配给我的javascript(使用TypeScript)对象的错误方法吗? myObject = data.results [0];
let query = breeze.EntityQuery.from("myTable").where('id', '==', incomingId).expand(['relatedTable']);
dataService.executeQuery(query).then((data) => {
this.myObject = data.results[0];
});
答案 0 :(得分:0)
我必须添加' .toType(" myType")'子句到查询。我使用了' metadataStore.registerEntityTypeCtor'在EntityManager中注册我的类型,但这个步骤对我来说仍然是必要的,我不完全理解。
let query = breeze.EntityQuery.from("myTable").where('id', '==', incomingId).expand(['relatedTable']).toType("myType");
dataService.executeQuery(query).then((data) => {
this.myObject = data.results[0];
});
编辑:我还发现使用EFContextProvider进行查询可以改善我的结果并减少难以置信的问题。在过去,我只使用了Context,虽然它有效,但我的实体类型在客户端不被Breeze理解。
readonly EFContextProvider<Context> _contextProvider = new EFContextProvider<Context>();
[HttpGet]
public IQueryable<Dispute> Disputes()
{
return _contextProvider.Context.Disputes;
}