2017-11-14 3 views
-1

Ich verwende NHibernate Mapping und SQLite für db. Teil von linq Ausdruck funktioniert gut, aber die anderen wie FirstOrDefault() oder Take() funktioniert nicht. weil die Linq erzeugt select Top(x or 1), und SQLite Arbeiten mit LIMITLinq To SQLite mit NHibernate

die config:

<session-factory name="ScenarioTest"> <property name="connection.release_mode">after_transaction</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="prepare_sql">true</property> <property name="show_sql">true</property> <property name="format_sql">false</property> <property name="generate_statistics">true</property> <property name="query.startup_check">false</property> <property name="adonet.batch_size">10</property> <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property> <property name="connection.connection_string">Data Source=|DataDirectory|dev.db;Default Lock Timeout=2000000;Version=3;New=True</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property> <!--<property name="use_outer_join">true</property>--> <property name="command_timeout">444</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <property name="adonet.wrap_result_sets">false</property> <property name="default_schema"></property> <property name="query.factory_class">NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory, NHibernate</property> </session-factory>

Es gibt eine Lösung?

+1

Haben Sie Ihre Sitzungsfactory so konfiguriert, dass 'SQLiteDialect' verwendet wird? Zeigen Sie uns Ihren Code –

+0

Ja, ich habe die Frage aktualisiert – Shoshana

+0

Ich kann von der 'SQLiteDialect' Klasse sehen, dass es Unterstützung für SQLite' Limit' Schlüsselwort gibt. Ich kann jedoch nicht feststellen, ob es vom LINQ-Anbieter unterstützt wird. Haben Sie Ihre Abfrage als QueryOver-Abfrage versucht? –

Antwort

0

Ok, ich habe das Problem gefunden ... Jemand hat einen neuen benutzerdefinierten Dialekt zu SQL Server 2008 im Code hinzugefügt, und es überschreibt die SQLiteDialect.

Danke.