Reputation: 6473
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
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