更新现有Breeze实体/不跟踪对象更改的实体
正如预期的那样,下面的代码从我的数据库返回一条记录。但是,它无法跟踪UI中的更改。我正在使用angularjs将myObject的属性绑定到各个字段。最初加载时一切正常,但如果我对对象进行更改并使用breeze的EntityManager.saveChanges(),它不会检测到任何更改。我可以创建一个新的实体并保存它,但我会尝试理解如何处理更新。在检索实体后是否需要分离该实体,然后重新附着并保存 或者这是将检索到的实体分配给我的javascript(使用TypeScript)对象的错误方法吗? myObject=data.results[0]更新现有Breeze实体/不跟踪对象更改的实体,breeze,breeze-sharp,Breeze,Breeze Sharp,正如预期的那样,下面的代码从我的数据库返回一条记录。但是,它无法跟踪UI中的更改。我正在使用angularjs将myObject的属性绑定到各个字段。最初加载时一切正常,但如果我对对象进行更改并使用breeze的EntityManager.saveChanges(),它不会检测到任何更改。我可以创建一个新的实体并保存它,但我会尝试理解如何处理更新。在检索实体后是否需要分离该实体,然后重新附着并保存 或者这是将检索到的实体分配给我的javascript(使用TypeScript)对象的错误方法吗?
let query = breeze.EntityQuery.from("myTable").where('id', '==', incomingId).expand(['relatedTable']);
dataService.executeQuery(query).then((data) => {
this.myObject = data.results[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进行查询可以极大地改善结果并减少问题。在过去,我只使用了上下文,虽然它起作用,但客户端的Breeze也不理解我的实体类型
readonly EFContextProvider<Context> _contextProvider = new EFContextProvider<Context>();
[HttpGet]
public IQueryable<Dispute> Disputes()
{
return _contextProvider.Context.Disputes;
}
readonly EFContextProvider\u contextProvider=new EFContextProvider();
[HttpGet]
可供公众查阅的争议()
{
return_contextProvider.Context.discovers;
}