流畅的NHibernate和MySQL强制转换语法?
我在MySQL中有一个表,它有一个字符串列“Id”,形式为“Xnnnn”,其中nnnn是一个数字 我想找到定义的最大nnnn。因此,我:流畅的NHibernate和MySQL强制转换语法?,mysql,nhibernate,fluent-nhibernate,Mysql,Nhibernate,Fluent Nhibernate,我在MySQL中有一个表,它有一个字符串列“Id”,形式为“Xnnnn”,其中nnnn是一个数字 我想找到定义的最大nnnn。因此,我: var c = s.CreateCriteria(typeof(Item)) .AddOrder(Order.Desc( Projections.Cast( NHibernateUtil.Int32, Projections.SqlFunction("substring", NHibernateUtil.String,
var c = s.CreateCriteria(typeof(Item))
.AddOrder(Order.Desc(
Projections.Cast(
NHibernateUtil.Int32,
Projections.SqlFunction("substring", NHibernateUtil.String,
Projections.Property("Id"),
Projections.Constant(2), Projections.Constant(10)))
))
.SetProjection(Projections.Property("Id"))
.SetMaxResults(1)
.List<string>();
哪个MySQL不喜欢。。。它坚持:
cast(substring(this_.Id, ?p0, ?p1) as SIGNED INTEGER)
我在演员阵容中尝试了各种类型,但没有一种能产生正确的输出。其他我需要做的映射工作都很好
有什么建议吗?这是NH的一个漏洞。它在3.0 Alpha2版本中已修复。 请参阅和以供参考 我在这里看到两个选项:
我没有显式地配置方言,我使用的是流利的NHibernate,我假设它是在那里处理的。当我尝试在配置中设置它时,出现了一个异常,即该属性已设置。3)backport。当我用方言报告一个bug(在3.0中修复)时,fabio建议将3.0提供程序放到定制的2.x版本中。这可能也行。@Gabe Moothart:是的,但在过去使用过这种解决方案后,我尽可能避免使用它。它只是增加了另一件需要记住的事情:“我们正在定制NH构建”。但是,如果您应用的更改与3.0中已经实现的更改完全相同,那么这是一个很好的选择
cast(substring(this_.Id, ?p0, ?p1) as SIGNED INTEGER)