gpt4 book ai didi

NHibernate QueryOver 投影、枚举和别名转换器

转载 作者:行者123 更新时间:2023-12-03 11:34:36 27 4
gpt4 key购买 nike

如何使用 QueryOver 和 AliasToBean 将枚举值转换为字符串值?我有以下但在尝试转换 Enum 时出错:

        SomeDTO someDTO = null;
SomeReferenceAlias someReferenceAlias = null;
var jobs = query
.JoinAlias(x => x.SomeReference, () => someReferenceAlias, JoinType.InnerJoin)
.SelectList(list => list
.Select(p => p.SomeStatusEnum).WithAlias(() => someDTO.SomeStatus)//problem here
.Select(p => someReferenceAlias.Name).WithAlias(() => someDTO.Name)
)
.TransformUsing(Transformers.AliasToBean<SomeDTO>())
.Take(100)
.List<SomeDTO>();

最佳答案

假设您的枚举在您的数据库中存储为 int,我会尝试将字符串只读属性设置为自定义字符串类型:

public enum SomeStatus {up=1,right=2,down=3,left=4}


public class SomeStatusNhString : NHibernate.Type.AbstractStringType
{
public SomeStatusNhString()
: base(new StringSqlType())
{
}

public SomeStatusNhString(StringSqlType sqlType)
: base(sqlType)
{
}

public override string Name
{
get { return "SomeStatusNhString"; }
}

public override object Get(System.Data.IDataReader rs, int index)
{
var x = base.Get(rs, index);
return ((SomeStatus)int.Parse((string)x)).ToString();
}
}

然后你的映射
public virtual String StatusAsString{ get; set; }


<property name="StatusAsString" column="YOUR_COLUMN" not-null="true" insert="false" update="false" type="YourNameSpace.SomeStatusNhString, YourDll" access="property"></property>

希望这可以帮助

关于NHibernate QueryOver 投影、枚举和别名转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com