在流畅的nhibernate映射中设置枚举的默认值

时间:2012-07-04 13:57:08

标签: c# nhibernate mapping fluent

我有这样的映射。

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

如何将值设置为某个特定项目类型。它是特定类型的组成部分。

2 个答案:

答案 0 :(得分: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]; } }
}

答案 1 :(得分:0)

key.Map(x => x.MyItemType).ReadOnly().Formula(((int)MyEnum.MyValueType).ToString()).CustomType<int>();