我最近升级到了最新版本的 Breezejs(从 1.3.6 到 1.4.1)。我有一种情况,我从服务器获取实体,我得到类似的东西
{
"$type": "X.Y.Reference, X.Y",
"ReferenceTypeId": "BookEdited",
"ShouldDisplay": true,
"ShortTitle": "Informationsethik 1995",
"Title": "Informationsethik",
"Year": "1995",
"YearResolved": "1995",
"CloudProjectSubset": "ReferenceNavigation",
"Id": "34e1f0d1-eda7-4926-a13f-e75e43ff66b5",
"ProjectId": "syncproject1"
},
我希望您注意“ShouldDisplay”属性设置为 true。后来,由于我的应用程序的逻辑,我做了另一个查询,我得到了同一个实体,这次是这样的:
{
"$type": "X.Y.Reference, X.Y",
"ReferenceTypeId": "BookEdited",
"ShortTitle": "Informationsethik 1995",
"Title": "Informationsethik",
"Year": "1995",
"YearResolved": "1995",
"CloudProjectSubset": "ReferenceNavigation",
"Id": "34e1f0d1-eda7-4926-a13f-e75e43ff66b5",
"ProjectId": "syncproject1"
},
请注意,由于我的逻辑,我不再获得属性“ShouldDisplay”,这是正确的。Breezejs 在每次查询后将实体合并到本地缓存。关键是,在第二个查询之后使用版本 1.3.6 时,我的实体仍然将“ShouldDisplay”设置为 true(这是我想要的),因为第二个查询返回没有该属性的相同实体,然后它不会被覆盖。然而,如果我使用 1.4.1 版,该属性(即使未序列化)无论如何都会被覆盖并设置为 null,这不是我想要的。简而言之,在我看来,在 1.3.6 版本中实际上只覆盖了返回的属性,而不是在 1.4.1 中,所有属性都被覆盖了。在 Breezejs 的网站上或者在网上我没有找到关于这种“合并”行为的信息,只有关于未决更改的合并策略的设置,这不是我现在所面临的。有人知道这是否是 Breezejs 应该工作的方式,还是我缺少一些配置?谢谢你。