|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13248. Ответов 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
|
|||||||||
|
14729 / 9505 / 1362
Регистрация: 21.01.2016
Сообщений: 35,848
|
|
| 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
|
|
|
14729 / 9505 / 1362
Регистрация: 21.01.2016
Сообщений: 35,848
|
|||
| 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
|
|
|
14729 / 9505 / 1362
Регистрация: 21.01.2016
Сообщений: 35,848
|
||
| 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Жара жесть.
kumehtar 18.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.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|