3
我升級形式NHibernate的3.2 NHibernate的3.3,我在我的領域類中定義一個像這樣的很多虛擬成員:爲什麼nhibernate 3.3不允許在ICollection上使用private setter?
public virtual ICollection<Movie> Movies { get; private set; }
該停止了升級後的工作,我得到這個異常:
Following types may not be used as proxies:
ClassName: method set_Movies should be 'public/protected virtual' or 'protected internal virtual'
現在我設法通過將setter更改爲protected來解決問題,但我也驚訝於將Collection屬性更改爲僅支持readonly的技巧。
所以我有兩個問題:
爲什麼NHibernate的決定禁止使用私人setter方法呢?它看起來不像從.net中的技術限制,因爲它之前被支持,我不應該從設計的角度來做,因爲我們應該使用Collection Remove(),Add()等方法來操作但爲什麼允許受保護的公共設置者呢?
爲什麼(以及如何)使用readonly屬性和後臺工作?
謝謝Firo ..你有一個想法之前他們使用什麼,他們現在使用什麼? – kabaros
Fluent-NHibernates defalut是城堡動態代理,集成(與ILmerge)是LinFu動態代理。但我不知道爲什麼林福有這種限制/設計選擇。你仍然可以使用城堡與NHibernates適配器,但它不再支持 – Firo
thx @DiegoMijelshon有用的信息。 – Firo