0

正如预期的那样,下面的代码从我的数据库中返回一条记录。但是,它无法跟踪 UI 中的更改。我正在使用 angularjs 将 myObject 的属性绑定到各个字段。一切最初加载正常,但如果我对对象进行更改并使用微风的 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];
            });
4

1 回答 1

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;
    }
于 2017-02-28T17:46:20.423 回答