1
標題漂亮意味着我正在嘗試做什麼。有一種方法可以知道對象實例是否是瞬態的? (或者至少還沒有保存?)Castle ActiveRecord - 如何知道對象實例是否爲瞬態?
謝謝大家!
PS .:不使用Exists方法。
標題漂亮意味着我正在嘗試做什麼。有一種方法可以知道對象實例是否是瞬態的? (或者至少還沒有保存?)Castle ActiveRecord - 如何知道對象實例是否爲瞬態?
謝謝大家!
PS .:不使用Exists方法。
通常這是將實體的PK屬性的值與定義的未保存值進行比較。最常見的情況是有一個int PK沒有定義未保存的值,例如:
[PrimaryKey]
public virtual int Id {get;set;}
在這種情況下,未保存的值是0,所以你可以比較ID的值與0,如果找出它是暫時的或不是。
如果您希望更一般地做到這一點,您可以從ActiveRecord模型中獲取未保存的值,並與使用反射的未保存值進行比較。 (未經測試!):
var entity = new MyEntity();
var pk = ActiveRecordModel.GetModel(typeof(MyEntity)).PrimaryKey;
var unsavedValue = pk.PrimaryKeyAtt.UnsavedValue;
var convertedUnsavedValue = Convert.ChangeType(unsavedValue, pk.Property.PropertyType);
var pkValue = pk.Property.GetValue(aform, null);
var transient = Equals(convertedUnsavedValue, pkValue);
這可能將無法在空UnsavedValues的面(在這種情況下,你應該用PK類型的默認值進行比較),但它應該讓你開始。
謝謝!工作正常... :) – marcoaoteixeira 2011-03-01 13:34:26