0

我必须审核对实体的更改,并了解如何获取所有值,但我不知道如何从实体管理器获取实体以订阅对其的更改。这是我尝试过的。

  // assume tblMw is an order entity attached to an EntityManager.
    manager.metadataStore("tblMw").entityAspect.propertyChanged.subscribe(
    function (propertyChangedArgs) {
        // this code will be executed anytime a property value changes on the 'order' entity.
        var entity = propertyChangedArgs.entity; // Note: entity === order
        var propertyNameChanged = propertyChangedArgs.propertyName;
        var oldValue = propertyChangedArgs.oldValue;
        var newValue = propertyChangedArgs.newValue;

        if (!entity.entityAspect.validateProperty(propertyNameChanged)) {
            //Property is not valid. Inform the user if needed.
        }

    });

我无法直接访问 tblMw。

4

1 回答 1

1

我对您要做什么感到困惑。您是否尝试为“tblMw”类型的每个实体订阅 propertyChanged?

如果是的话,你真的不能那样做。您可以做的是将您的 entityManager 订阅到 entityChanged 事件并在事件方法中检查实体的类型:

    em.entityChanged.subscribe(function(args) {
        if (args.entity.entityType.shortName == "tblMw")
        // Do something
    });

有关这方面的更多信息,请访问 http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html

缺点是每个实体的每次更改都会触发该事件。

另一种选择是手动订阅实体的每个实例。

在您的情况下,此选项可能不可行,因为您声明“无法直接访问 tblMw”。虽然,我不清楚这是什么意思,因为您必须有权访问 entityManager 中的每个实体实例。

于 2013-09-03T21:10:07.653 回答