Karl Cassar
Karl Cassar

Reputation: 6473

Nhibernate - Dialect does not support DbType.Double

When I try to execute this query:

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

I am getting a:

Dialect does not support DbType.Double
Parameter name: typecode

Any ideas? I am using a MySQL dialect, and cannot imagine where the query can be wrong as its quite simple.

AccountBalance is of type double. I've even tried it with the average of the ID field, which is of type long, but still got the same exact error message.

Upvotes: 3

Views: 2541

Answers (2)

Ziv.Ti
Ziv.Ti

Reputation: 657

change the dialect on the config file or bootstrapping

Upvotes: 0

PeterFearn
PeterFearn

Reputation: 357

NHibernate uses cast to ensure return type of AVG function.

MySql prior version 5 does not support NUMERIC type in CAST expression. The support was added in MySql 5.0.8. So you need to use MySQL5Dialect.

ORIGINAL ANSWER:

I don't know if this will help, but as I said above I was having a similar problem. Upon digging a little further in I discovered that I had been using the NHibernate.Dialect.MySQLDialect (via FluentNHibernate.Cfg.Db.MySQLConfiguration)

To fix my problem I used the MySQL5Dialect instead, i.e.

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

Hope this helps you as I was really scratching my head on this one...

Upvotes: 7

Related Questions