|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13602. Ответов 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
|
|||||||||
|
14813 / 9587 / 1368
Регистрация: 21.01.2016
Сообщений: 36,103
|
|
| 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
|
|
|
14813 / 9587 / 1368
Регистрация: 21.01.2016
Сообщений: 36,103
|
|||
| 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
|
|
|
14813 / 9587 / 1368
Регистрация: 21.01.2016
Сообщений: 36,103
|
||
| 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|