2012-07-04 1 views
0

나는 이와 같은 매핑이 있습니다.유창한 nhibernate 매핑 enum에 대한 기본값을 설정

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>();