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 LIMIT
Linq 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?
Haben Sie Ihre Sitzungsfactory so konfiguriert, dass 'SQLiteDialect' verwendet wird? Zeigen Sie uns Ihren Code –
Ja, ich habe die Frage aktualisiert – Shoshana
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? –