Nhibernate - Dialect不支持DbType.Double

Kar*_*sar 3 c# mysql nhibernate dialect

当我尝试执行此查询时:

        var q = session.QueryOver<Member>();
         q.Select(Projections.Avg<Member>(x => x.AccountBalance));
          var result = q.List();
Run Code Online (Sandbox Code Playgroud)

我得到一个:

Dialect does not support DbType.Double
Parameter name: typecode
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我使用的是MySQL方言,并且无法想象查询可能出错的地方因为它非常简单.

AccountBalance是类型的double.我甚至尝试过该ID字段的平均值,类型为long,但仍然得到相同的确切错误消息.

Pet*_*arn 8

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

MySql先前版本5不支持表达式中的NUMERIC类型CAST.在MySql 5.0.8中添加了支持.所以你需要使用MySQL5Dialect.

原始答案:

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

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

Fluently.Configure().Database(MySQLConfiguration.Standard
    .Dialect<MySQL5Dialect>()
    .ConnectionString(connectionString))
Run Code Online (Sandbox Code Playgroud)

希望这能帮助你,因为我真的在这个问题上摸不着头脑......