|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13257. Ответов 96
Метки нет (Все метки)
Работаю с БД очень редко.
Поэтому опыт маленький и знания обрывочные. Стоит задача в Решении Framework 4.8 создать репозиторий на SQLite для такого контекста (пример):
Хотелка: реализация Code-First, то есть после запуска приложения в новом расположении без БД, что бы автоматически она была создана. Доп. хотелки: 1) Запись в новую базу каких-то начальных данных (для образца); 2) Сделать независимые контексты для каждой сущности. То есть они могут быть в разных БД или в одной, но в разных таблицах. Это определяется уже при использовании репозитория передачей разных (каких?) параметров в конструктор. Не знаю: 1) Для SQLite есть несколько разных основных пакетов, а к ним ещё и дополнительные. Какие лучше использовать? 2) Что ещё нужно добавить в конструктор и переопределяемые методы для реализации этой задачи? И насколько я понимаю, в зависимости от используемого комплекта пакетов, код реализации контекста может быть разный? 3) Атрибута [Index] для SQLite я не нашёл. Я его не там искал или его у SQLite DBContext нет? Если нет то как решить проблему быстроного поиска по нужному значению?
0
|
|||||||||||
| 22.09.2021, 19:48 | |
|
Ответы с готовыми решениями:
96
System.data.sqlite не существует! Почему нет SQLite в разделе System.DATA Как включить поддержку ICU в System.Data.SQLite ? |
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|||||||||||
| 28.09.2021, 14:37 | |||||||||||
|
EF будет выглядеть примерно так
И подключение к локальному происходило, вероятнее всего, из-за специфики работы DbContext из System.Data.Entity
0
|
|||||||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 28.09.2021, 14:47 | |
|
Microsoft.EntityFrameworkCore.SQLite
EF для работы с SQLite. Такие библиотеки под каждую СУБД (MSSQL, MySQL...)
0
|
|
|
Модератор
|
||
| 28.09.2021, 14:48 [ТС] | ||
|
Мне оно не нужно. Мне надо просто тупо получить две отдельные таблицы и возможность делать выборки по ним без выгрузки данных. Возможно только понадобится контроль за ContactId при удалении/добавлении записей. Чтобы несуществующих ContactId в базе не было.
0
|
||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|||||||
| 28.09.2021, 14:55 | |||||||
В остальном должно работать....
0
|
|||||||
|
Модератор
|
||
| 28.09.2021, 15:06 [ТС] | ||
|
Но они же необязательно от самой MS. Добавлено через 2 минуты ipsorokin, и цель всей темы сравнить System.Data с Microsoft.EntityFrameworkCore.Sqlite. Поэтому для начала взялся за реализацию на System.Data.
0
|
||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 28.09.2021, 15:11 | |
|
Значит одно приложение делайте через System.Data.SQLite (ADO.NET), а другое Microsoft.EntityFrameworkCore.SQLite (EFC).
0
|
|
|
|
|
| 28.09.2021, 15:17 | |
|
Начальная ошибка и недоразумение было в том что pathAndNameDB использовался как имя базы данных. Когда его передают в base то он используется для поиска в строках подключения.
А нормальная строка коннекции должна быть другой и к этому всё равно придёте. А дальше. Сначала сработает ошибка - не определён провайдер ADO. Нужно в инициализацию приложения регистрировать трёх провайдеров. Потом всё равно сработает стратегия создания модели. И там нужно тупо вызывать сервис/код который файл создаёт и структуру таблиц. ЕФ наверное может, но это не ЕФ. И я уже 5 минут код редактирую и ещё не достиг нужного результата. Но уже пришёл к выводу, что давал нормальный совет как сделать репозитории на этой библиотеке, но без лишних связей и без попыток сделать "мини-еф с автоматической миграцией". Как я уже ранее сказал - или напишите сами обёртку под ADO или поставьте нормальный EF + пакет который миграцию сделает. P.S. глянул в своё приложение. Понял почему у меня не было EF. Я использую самую облегчённую версию - "Stub.System.Data.SQLite.Core.NetStandar d" (1.0.115). Там только 1 библиотека.
1
|
|
| 28.09.2021, 15:30 | |
|
Не по теме: Какой увлекательный детектив. :popcorn: Такое впечатление, что код Дарья Донцова писала.
0
|
|
|
|
||
| 28.09.2021, 15:34 | ||
|
0
|
||
|
Модератор
|
|||
| 28.09.2021, 16:11 [ТС] | |||
|
В трех соснах плутаю.... Добавлено через 9 минут Или этого тоже мало?
0
|
|||
|
14732 / 9506 / 1363
Регистрация: 21.01.2016
Сообщений: 35,857
|
|
| 28.09.2021, 17:23 | |
|
Т.е. вместо SQLite использовался SQL Server LocalDb?)))
0
|
|
|
Фрилансер
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
|
||||||||
| 28.09.2021, 17:45 | ||||||||
|
там же в пакетах
0
|
||||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
||
| 28.09.2021, 18:18 | ||
DbContext был из System.Data.Entity (на что сразу можно не обратить внимание, автор не нуб все-таки ). При беглом взгляде на который бросается в глаза подключение к SQLServer.Поэтому тут был использован EF (6) со своей логикой работы DbContext, а не System.Data.Sqlite.Вывод банален: была использована одна библиотека (EF6), а результат ждали по другой (Sqlite).
0
|
||
|
Модератор
|
||
| 28.09.2021, 20:07 [ТС] | ||
|
Вот старая тема: Пример создания приложения "Работа с комнатами в студенческих общежитиях" [WPF, SQLite, Элд Хасп] В ней мне помог Usaga. Там используется тот же набор пакетов. DbContext так же из System.Data.Entity.C SQLite всё нормально работает. Пара отличий. Я там не пытался создавать саму БД. БД я создавал внешними инструментами. Второе, там все параметры берутся по умолчанию из конфигурационного файла. А я сейчас кроме имени БД ничего не передаю. Поэтому, возможно, в результате выкидывания исключений (о них писал HF) или из-за того, что нет явно заданных провайдеров происходит какое-то переключение. Как правильно явно задать провайдеров? И другие параметры для DBContext?
0
|
||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|||
| 28.09.2021, 21:03 | |||
|
Раздел Remarks dbcontext Добавлено через 2 минуты Добавлено через 31 минуту Расшифрую, что имел ввиду. В проекте использовали DbContext из System.Data.Entity, который, по своей логике, ищет строку в конфигах. Если её нет, то конектится к локальному localdb.В DbContext из System.Data.Sqlite заложена другая логика и он просто выдаст ошибку, что нет базы/папки, а не будет конектиться к локальному.Может, я что и не так понимаю.
1
|
|||
|
Модератор
|
|||
| 28.09.2021, 21:33 [ТС] | |||
|
Я могу написать пока только о практических результатах моего "научного тыка". Завтра буду разбираться как явно надо задавать провайдеров.
0
|
|||
| 28.09.2021, 21:33 | |
|
Не удалось найти запрошенного поставщика данных (System.Data.SQLite) Установка System.Data.SQLite для Visual Studio 2015 Не могу подключиться к SQLlite (Could not load file or assembly 'System.Data.SQLite) Не работает проверка существования таблицы через метод ExecuteNonQuery() из System.Data.SQLite.dll
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|