|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13658. Ответов 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
|
|||
|
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,150
|
|
| 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|