2012-08-15 39 views
0

我存儲對象在我的傳奇數據中有屬性,應該在序列化和反序列化過程中被忽略。我試着用[NonSerialized]和[JsonIgnore]標記這些屬性(並且用[DataContract]註釋這些類,而不是製作這些屬性[DataMember] ...),但似乎什麼也沒有辦法。無論我做什麼,當NServiceBus調用Json.NET來保存傳奇數據時,所有的屬性都會被序列化。我也嘗試爲有問題的對象實現自定義的JsonConverter,並且也被忽略(是的,我用[JsonConverter(typeof(MyConverter))]]註釋對象類型...)NServiceBus RavenDB傳奇persister忽略JsonIgnoreAttribute

Is有一種方法可以讓傳奇持久化忽略傳奇數據中包含的對象中的屬性?作爲參考,我使用NServiceBus 3.2.7,Json.NET 4.5.7和RavenDB build 960.總線配置爲使用RavenDB持久性和傳奇持久性。

+0

我知道你可能不想聽到這個 - 但你爲什麼要這樣做? :-) – 2012-08-15 15:27:47

+0

我有一個複雜的任務,可以細分爲大量較小的任務。較小任務的結果需要結合到整個複雜任務的結果中。因此,我將這些較小任務的結果存儲在傳奇數據中用於此目的。一些屬性不應該被序列化的原因是它們包含了我不想保留的相對較重的數據。我*可以*重構這個傳奇故事,這樣只有相關數據(一個變更集)纔會保存在傳奇數據中,我可能會在後面做這個,但我不明白爲什麼我現在不能只是[JsonIgnore] 。 – ivern 2012-08-15 16:05:30

+0

是的。恐怕我不知道爲什麼NonSerialized被忽略的答案,但如果你明白我的意思,那麼對於我來說沒有任何意義的是你的數據不是傳奇數據。 – 2012-08-15 16:18:55

回答

0

NServiceBus內部化了烏鴉客戶端和json.net。這就是爲什麼這些屬性不起作用(因爲我們與內部標誌合併,它們本質上是不同的類型)。解決方法是使用未合併的nsb核心版本。這就是說我很好奇爲什麼你需要這些額外的屬性?

+0

我將商業對象編寫器存儲在傳奇數據中,一旦傳奇完成,這些傳奇數據將被合併併發回給調用者。編寫者通常包含基礎對象數據+對其進行更改的字典。基礎數據可能非常大,因爲調用者已經擁有它,因此不需要實際存儲在傳奇數據中。我想我會做的是重構一些東西,所以我只是在傳奇數據中存儲更改的字典,而不是具有不可序列化字段的業務對象。謝謝。 – ivern 2012-08-15 19:49:41

+0

我會將您的答案標記爲有效,因爲您已幫助我理解屬性無效的原因。再次感謝。 – ivern 2012-08-15 19:51:00