2012-07-04 103 views
0

我有這樣的映射。在流暢的nhibernate映射中爲枚舉設置默認值

public class MyObjectMap : ClassMap<MyObject> { 
public MyObjectMap() 
{ 
    Component(_ => _.MyItem, key => 
    { 
    key.Map(x => x.MyItemValue).Column("COL"); 
    /** I want to set this value to a particular enum in this mapper **/ 
    key.Map(x => x.MyItemType).AssignSomeValue(MyEnum.MyValueType) 
    }); 
} 
} 

如何將該值設置爲某種特定的項目類型。它是特定類型的組件。

+0

你的意思是它應該總是而不需要在數據庫中的列的值相同? – Firo

+0

是的,x.MyItemType的值在讀出數據庫時應始終具有相同的值。這個類在其他情況下使用,但在這種情況下,它是從數據庫中讀出來的,我希望無論如何設置一個默認值。 – Jim

+0

也許映射器有某種事件。 OnItemBeingRead之類的東西。 – Jim

回答

0

IUserType能做到這一點

class ConstantValueUserType : IUserType 
{ 
    NullSafeGet(IDataReader rd, string[] names, object owner) 
    { 
     return 5; // Constant Value 
    } 

    public object NullSafeSet(ICommand cmd, object value, int index) 
    { 
     // empty, we dont want to write 
    } 

    public SqlType[] SqlTypes { get { return new SqlType[0]; } } 
} 
0
key.Map(x => x.MyItemType).ReadOnly().Formula(((int)MyEnum.MyValueType).ToString()).CustomType<int>(); 
相關問題