假设我有一个包含状态类型的类,它被定义为这样的枚举:
public class MyObject
{
public virtual int Id { get; set; }
public virtual SomeEntity Data { get; set; }
public virtual MyStatusEnum Status { get; set; }
}
public enum MyStatusEnum
{
Active = 1,
Paused = 2,
Completed = 3
}
我通过 Fluent nHibernate 完成的映射如下所示:
public class MyObjectMap: ClassMap<MyObject>
{
public MyObjectMap()
{
this.Table("my_object_table");
...
this.References(x => x.SomeEntity).Column("some_entity_id").Not.Nullable();
this.Map(x => x.Status).Column("status_type").CustomType<MyStatusEnum>().Not.Nullable();
}
}
现在设置已经完成,我的困境是:
在我的存储库类中,我想通过 Status 属性对所有 MyObject 实体进行排序,nHibernate 将其保留为 int。但是,由于我无法控制的权力,我无法重新排序 MyStatusEnum 以便枚举值按字母顺序排序。当我创建条件以选择 MyObjects 列表并尝试按 Status 属性对其进行排序时,它会按 Status 的 int 值进行排序。
ICriteria criteria = this.Session.CreateCriteria<MyObject>("obj")
.AddOrder(Order.Asc("Status"))
.List()
我真的很希望能够按枚举名称订购。任何想法将不胜感激。