C# 在fluent nhibernate映射中设置枚举的默认值

C# 在fluent nhibernate映射中设置枚举的默认值,c#,nhibernate,mapping,fluent,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

我有一个这样的映射

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)
  });
}
}
公共类MyObjectMap:ClassMap{
公共MyObjectMap()
{
组件(=>u.MyItem,键=>
{
key.Map(x=>x.MyItemValue).Column(“COL”);
/**我想将此值设置为此映射器中的特定枚举**/
key.Map(x=>x.MyItemType).AssignSomeValue(MyEnum.MyValueType)
});
}
}
如何将值设置为某个特定的项目类型。它是特定类型的组件。

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]; } }
}
key.Map(x=>x.MyItemType).ReadOnly().Formula(((int)MyEnum.MyValueType).ToString()).CustomType();

您的意思是它应该始终具有相同的值,而不需要数据库中的列吗?是的,从数据库中读取x.MyItemType的值时,它应该始终具有相同的值。该类在其他情况下使用,但在本例中,它是从数据库中读取的,我希望设置一个默认值。我读过什么。
key.Map(x => x.MyItemType).ReadOnly().Formula(((int)MyEnum.MyValueType).ToString()).CustomType<int>();