|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13674. Ответов 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
|
||
| 24.09.2021, 14:35 | ||
|
Вы же сказали, что создаете специально под базу директорию)) А раз подключение идет через конкретный фал по конкретному пути, а не к серверу, то путь должен существовать.
0
|
||
|
Модератор
|
||||||||
| 24.09.2021, 14:40 [ТС] | ||||||||
|
А как передать путь и имя базы? Насколько понял он нужен в:
Писал - "как в голову взбредёт" и так чтобы понятно было.
0
|
||||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
||
| 24.09.2021, 14:40 | ||
|
Ну и если решили делать через EF, посмотрите сразу навигационные свойства и Lazy loading.
0
|
||
|
Модератор
|
||||
| 24.09.2021, 14:55 [ТС] | ||||
|
БД и Папка не являются частью сборки. Поэтому при переносе сборки их не будет. Кроме того, возможно, для каждого пользователя на компе будет отрываться своя папка где-то в расположении Application.LocalUserAppDataPath. Добавлено через 9 минут В реальном приложении может быть несколько БД и надо между ними переключаться. Имя БД должно передаваться. Или как-то динамически можно менять строку подключения в congig? Да, так же (как учебный вариант) возможно и одновременное использование разных БД. Но здесь как бы оно не надо. Собираться все сущности будут в линейные коллекции, а иерархия будет строиться с помощью CollectionView.
0
|
||||
|
|
||
| 24.09.2021, 16:15 | ||
|
А почему не вариант хранить строки в app.config? Они не могут называться по разному? ContactsDbConnectionString, BooksDbConnectionString и т.п. ?
UoW. Каждый контекст имеет свою инициализацию. Соответственно и параметры там свои могут быть. А эти строки вы всё равно будете получать откуда то.Насчёт "переключаться". Вы же не менять строки коннекции будете, а переключаться между уже настроенными контекстами, репозиториями. Строку в конфиге динамически менять? для чего? чтобы потом оттуда её прочитать?
0
|
||
|
Модератор
|
|||
| 24.09.2021, 18:25 [ТС] | |||
|
Разве я не так и сделал? Строки будут храниться где-то в расположении Application.LocalUserAppDataPath. Там будет какой-то файл настроек отдельный для каждого пользователя. Каким образом они получаются оттуда в контексте этой темы не важно. Вот получил я строки "DataBases/contacs1.db" и "DataBases/contacs2.db". И как мне теперь работать с этими двумя БД? Я предполагал, что их надо передавать в конструктор ContactBD.
0
|
|||
|
|
|||
| 24.09.2021, 18:36 | |||
![]() В кратце - контекст один. Внутри приватно созданы контексты других БД. Наружу торчат репозитории, которые для нас - единый контекст, но ссылаются они на свои БД, которые в свою очередь, со своим контекстом. Ну и да, осталось инициализировать эти контексты, читая из конфигов настройки пути до файлов.
0
|
|||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
||||||
| 24.09.2021, 19:23 | ||||||
|
Наверное, имелось ввиду что-то типо этого
3
|
||||||
|
|
|||||||||
| 24.09.2021, 19:45 | |||||||||
![]() ![]()
2
|
|||||||||
|
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,153
|
|
| 27.09.2021, 07:57 | |
|
2
|
|
|
Модератор
|
|
| 27.09.2021, 22:14 [ТС] | |
|
Usaga, MsGuns, ipsorokin, HF, перешёл на Core.
В отношении System.Data.SQLite - проблемы с неподтягиванием зависимостей в основной проект не возникло. По крайней мере для консольного проекта пока работает. Если и дальше проблем не будет, то вы бор однозначно будет в его пользу. Но возникла неожиданная проблема. "Тихо шифером шурша, крыша едет не спеша" - не могу найти где создаётся БД! Она создаётся, в неё записываются элементы в тестовом коде. Но по указанному пути её нет! Получаю для проверки db.Database.Connection.Database - там вся правильно, путь и имя которые и указывал.Путь и имя передаю явно в конструктор string dbName = @"C:\SQLite\contacs.db"; ... var db = new ContactsDB(dbName).Ссылка на Git: https://github.com/EldHasp/SQLiteExamle
0
|
|
|
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,153
|
|||
| 27.09.2021, 22:20 | |||
|
0
|
|||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 27.09.2021, 22:20 | |
|
А в AppData не попадает?
0
|
|
|
Модератор
|
|||||
| 27.09.2021, 22:29 [ТС] | |||||
|
Добавлено через 1 минуту Добавлено через 1 минуту А даже специально виртуальный пустой диск создал перенёс сборку туда и там запускаю. Ничего не добавляется - базы нет! Вернее она есть, но неизвестно где! Добавлено через 3 минуты Решил для упрощения задать абсолютный - тут-то он никуда не денется! Ну, да.... не денется. До сих пор репу чещу... Добавлено через 2 минуты Я ещё обрадовался, что весь путь автоматически создаётся. Из переопределения контекста всё убрал кроме DBSet.
0
|
|||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 27.09.2021, 22:46 | |
|
Если вкратце, то я имел ввиду виртуализацию. Там бывает пишет в другую папку
...AppData\Local\VirtualStore
0
|
|
|
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,153
|
||
| 27.09.2021, 22:50 | ||
|
0
|
||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 27.09.2021, 22:52 | |
|
0
|
|
| 27.09.2021, 22:52 | |
|
Не удалось найти запрошенного поставщика данных (System.Data.SQLite) Установка System.Data.SQLite для Visual Studio 2015 Не могу подключиться к SQLlite (Could not load file or assembly 'System.Data.SQLite) Не работает проверка существования таблицы через метод ExecuteNonQuery() из System.Data.SQLite.dll
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы 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 — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|