在NHibernate的使用期間...實現IPropertyAccessor NHibernate
我遇到的一個奇怪的問題是Session.Flush()命令後的多個更新。沒有數據實際改變...只是想執行選擇所有,在我的情況下有1000個更新 - 每個返回行一個!
只有當我使用具有自定義PropertyAccessor的屬性作爲訪問類型時,纔會發生此類行爲。我創建自定義屬性的原因是因爲我在對象中有uint和ushort類型,所以我想在Setter上將它們從(長或Int32相應地)放入。
問題是如何禁用這些更新或爲什麼我的自定義Setter導致這種行爲?
void Set(object target, object value)
{
If(Value.GetType() == typeof(long))
{
Target.GetType().GetProperty(_propertyName).SetValue((uint)value);
}
}
由於提前,
更新:------ 如何禁用每前沖洗這個骯髒的檢查?
10x對於類型的好點...可能我會使用session.Evict(obj)選項。 – user3072 2010-07-20 14:57:24
如果您可以考慮在實體和數據庫映射之間使用「匹配」類型。或者使用CustomSqlType在映射層重新映射(例如,請參閱http://stackoverflow.com/questions/644496/fluent-nhibernate-schema-generation) – 2010-07-20 15:19:19
我對NHibernate源代碼進行了一些調試,原因是類型不匹配。就像你假設骯髒的國旗...比較是這樣進行的 return x.Equal(y); 在我的情況下,x很長,y是uint,所以結果總是假的。 至於你的建議,我不喜歡在我的業務邏輯對象中使用特殊的NHibernate類型......我真的不明白爲什麼沒有構建支持uint,ushort等類型? – user3072 2010-07-20 19:58:54