Linq + SQLite + Take() == Проблема

Я использую System.Data.SQLite для доступа к базе данных SQLite через С#/linq. У меня не было проблем, пока я не попытался использовать функцию Take()/Skip(), которая вызвала исключение. Сообщение об ошибке в случае Take(): «Ошибка SQLite рядом с «.»: синтаксическая ошибка». Любые идеи, что я мог бы сделать, чтобы обойти это?


person B_old    schedule 30.06.2011    source источник
comment
Вы используете самую последнюю версию System.Data.SQLite?   -  person Stephen Cleary    schedule 30.06.2011
comment
На данный момент: Нет. Я не замечал до вчерашнего дня и должен ждать, пока мой администратор установит самую последнюю версию. Я дам вам знать, как все прошло.   -  person B_old    schedule 01.07.2011
comment
С версией 1.0.73.0 проблема осталась.   -  person B_old    schedule 01.07.2011
comment
Я считаю, что последняя версия 1.0.66.0. Вы можете попробовать изучить сгенерированный SQL (привести запрос к ObjectQuery и вызвать ToTraceString) или просто спросить в форум SQLite - сопровождающие не следят за SO регулярно.   -  person Stephen Cleary    schedule 01.07.2011
comment
Я обновился до этой вилки, которая, кажется, имеет более свежие версии.   -  person B_old    schedule 06.07.2011


Ответы (2)


возможно, вам нужен DBLinq http://code.google.com/p/dblinq2007/

person dan_l    schedule 30.06.2011
comment
Какое место во всем этом занимает DBLinq? Кажется, он использует System.Data.SQLite, но, может быть, он делает собственное преобразование LINQ в SQL? - person B_old; 30.06.2011

У меня была такая же проблема с использованием VS2008 SP1, System.Data.Sqlite.Linq v2.0.38.0 и System.Data.Sqlite v1.0.66.0.
Решил аналогичную ошибку (с LINQ Skip), раскомментировав раздел DbProviderFactories в app.config, не спрашивайте меня, почему это работает.
В этом разделе показано Сюда:

  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>

(Я работаю со старым проектом VS2008 после переустановки ОС, и мне пришлось переустановить все зависимости, я думаю, что я не устанавливал те же точные версии Sqlite, которые у меня были. Это всегда работало с комментарием этого раздела app.config)

person Ivan Ferrer Villa    schedule 15.06.2017
comment
У меня тоже сработало, .net framework 4.8, C# 8 активирован. Установлен новейший пакет System.Data.SQLite.Linq NuGet. Во всяком случае, после удаления пакета NeGet он работал без app.config. Я предполагаю, что этот пакет не нужен в текущих фреймворках, а пакет nuget сбил систему с толку. - person Martini Bianco; 14.10.2019