更新现有Breeze实体/不跟踪对象更改的实体

更新现有Breeze实体/不跟踪对象更改的实体,breeze,breeze-sharp,Breeze,Breeze Sharp,正如预期的那样,下面的代码从我的数据库返回一条记录。但是,它无法跟踪UI中的更改。我正在使用angularjs将myObject的属性绑定到各个字段。最初加载时一切正常,但如果我对对象进行更改并使用breeze的EntityManager.saveChanges(),它不会检测到任何更改。我可以创建一个新的实体并保存它,但我会尝试理解如何处理更新。在检索实体后是否需要分离该实体,然后重新附着并保存 或者这是将检索到的实体分配给我的javascript(使用TypeScript)对象的错误方法吗?

正如预期的那样,下面的代码从我的数据库返回一条记录。但是,它无法跟踪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];
            });
我必须在查询中添加“.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;
}