【发布时间】:2013-12-22 04:16:43
【问题描述】:
我用这段代码过滤数据库记录
if (!string.IsNullOrEmpty(_searchCriteria.MessageType))
{
var messageType = (AutotransferMessageType)Enum.Parse(typeof(AutotransferMessageType), _searchCriteria.MessageType, true);
if (Enum.IsDefined(typeof(AutotransferMessageType), messageType))
{
criteriaQuery.CreateAlias("AutotransferInputRecord", "AutotransferInputRecord")
.Add(
Restrictions.Eq(
"AutotransferInputRecord." + AutotransferLogSearchCriteria.MessageTypePropertyName,
messageType));
}
else
{
criteriaQuery.Add(Restrictions.IsNull("AutotransferInputRecord"));
}
}
AutotransferMessageType 是可枚举类型
public enum AutotransferMessageType
{
[DisplayName("MT202")]
[DatabaseName("MT202")]
MT202,
[DisplayName("MT210")]
[DatabaseName("MT210")]
MT210,
//...
}
例如,当我输入 MT202 时,我的过滤器会输出结果。 (这是正确的行为)。
当我只输入数字时,例如 202,我没有得到任何结果(这也是正确的行为)。
但是当我尝试输入某些行时,例如“mt”,我得到错误
发生了意外的应用程序错误:
'未找到请求的值'mt'。'
输入一行时如何让过滤器不显示任何结果?
【问题讨论】:
标签: nhibernate nhibernate-criteria