Nhibernate-方言不支持DbType.Double

本文关键字:Double DbType 不支持 方言 Nhibernate- | 更新日期: 2023-09-27 18:19:34

当我尝试执行此查询时:

        var q = session.QueryOver<Member>();
         q.Select(Projections.Avg<Member>(x => x.AccountBalance));
          var result = q.List();

我得到了一个:

Dialect does not support DbType.Double
Parameter name: typecode

有什么想法吗?我使用的是MySQL方言,无法想象查询在哪里会出错,因为它非常简单。

CCD_ 1是CCD_。我甚至用ID字段的平均值进行了尝试,它的类型很长,但仍然得到了完全相同的错误消息。

Nhibernate-方言不支持DbType.Double

NHibernate使用强制转换来确保AVG函数的返回类型。

MySql早期版本5不支持CAST表达式中的NUMERIC类型。MySql 5.0.8中添加了该支持。因此,您需要使用MySQL5Dialect。

原始答案

我不知道这是否会有所帮助,但正如我上面所说,我也遇到了类似的问题。在进一步挖掘后,我发现我一直在使用NHibernate.Dialect.MySQLDialect(通过FluentHibernate.Cfg.Db.MySQLConfiguration)

为了解决我的问题,我使用了MySQL5Dialect,即

Fluently.Configure().Database(MySQLConfiguration.Standard
    .Dialect<MySQL5Dialect>()
    .ConnectionString(connectionString))

希望这能帮到你,因为我真的很头疼。。。

更改配置文件上的方言或引导