我有一个带有导航属性的父实体。如果修改了集合中的任何子节点,则将子节点的entityState设置为modified,但父节点的entityState保持不变。
我需要在屏幕上显示一个视觉指示,以显示对父实体进行了一些修改,即使修改是在np集合中的子项上进行的。
我不能使用hasChangesChanged,因为它太通用了。我只需要在父实体本身或np集合中的一个实体上进行更改时设置可视指示器。
有没有简单的方法可以做到这一点,还是我必须手动注意修改?
答案 0 :(得分:1)
显然我没有点击我的其他答案,但你要做的是要跟踪对子实体的更改。您需要“手动”订阅这些更改,因为我不知道开箱即用来观察整个对象图。 (请记住,这可能是巨大的,并产生不利影响)
我之前使用的最佳选项(伪代码,使用Knockout但应该足够) -
使用其他未映射的属性初始化父级 -
metadataStore.registerEntityTypeCtor('Person', null, personInitializer);
function personInitializer(person) {
person.hasChanges = ko.computed(function() {
ko.utils.arrayForEach(person.children(), function (child) {
child.entityAspect.propertyChanged.subscribe(function () {
// Do your logic here
});
});
});
}
要记住的一件事是你要跟踪订阅,并确保在处理父对象时将其丢弃。