3 Stimmen

Nhibernate - Der Dialekt unterstützt DbType.Double nicht

Wenn ich versuche, diese Abfrage auszuführen:

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

Ich bekomme eine:

Dialect does not support DbType.Double
Parameter name: typecode

Irgendwelche Ideen? Ich verwende einen MySQL-Dialekt und kann mir nicht vorstellen, wo die Abfrage falsch sein könnte, da sie recht einfach ist.

AccountBalance ist vom Typ double . Ich habe es sogar mit dem Durchschnitt der ID Feld, das vom Typ long ist, aber trotzdem genau dieselbe Fehlermeldung erhalten.

7voto

PeterFearn Punkte 357

NHibernate verwendet cast, um den Rückgabetyp von AVG Funktion.

MySql vor Version 5 unterstützt nicht NUMERIC eintippen CAST Ausdruck. Die Unterstützung wurde in MySql 5.0.8 hinzugefügt. . Sie müssen also MySQL5Dialect verwenden.

ORIGINALANTWORT :

Ich weiß nicht, ob dies helfen wird, aber wie ich oben sagte, hatte ich ein ähnliches Problem. Nachdem ich ein wenig weiter gegraben hatte, entdeckte ich, dass ich den NHibernate.Dialect.MySQLDialect (über FluentNHibernate.Cfg.Db.MySQLConfiguration) verwendet hatte.

Um mein Problem zu lösen, habe ich stattdessen den MySQL5Dialect verwendet, d.h.

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

Ich hoffe, das hilft Ihnen, denn ich habe mir wirklich den Kopf darüber zerbrochen...

0voto

Ziv.Ti Punkte 599

Den Dialekt in der Konfigurationsdatei oder beim Bootstrapping ändern

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X