|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13233. Ответов 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 ? |
|
Модератор
|
||
| 27.09.2021, 23:52 [ТС] | ||
|
Сейчас делаю полный сейф лога и по нему попробую текстом поискать. Добавлено через 16 минут Usaga, я не смог ничего найти этой утилитой. Чё за чёрт?! Дурдом какой-то.... Завтра на свежую голову, ещё покопаюсь, но пока даже проблеска мысли нет куда копать надо.
0
|
||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
|
|
| 27.09.2021, 23:57 | |
|
Элд Хасп, да просто сюда архив с проектов выложите)
1
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 28.09.2021, 00:58 | |
|
Элд Хасп, Вы не ищете легких путей, только "мощь" EF, только хардкор.
Ну что же, ждите "много открытий чудных.."
0
|
|
|
Модератор
|
|
| 28.09.2021, 08:04 [ТС] | |
|
0
|
|
|
|
|||||||
| 28.09.2021, 08:36 | |||||||
![]() А кто за вас будет делать?
Я лично был только одному удивлён - что SaveChanges "записывает" в память. Ну тут видимо фича, надо почитать про это. Видимо без файла - он работает в режиме InMemory. Добавлено через 3 минуты И ещё, удалять каталог - это вообще мне кажется какая-то жесть. Как вам это в голову пришло? В таких каталогах бывает помимо БД ещё много чего. Я даже сначала Debug\Bin сделал, дак чуть не обосрался от страха когда понял что могло произойти. Файл - да, его можно и удалить и потом создать.
2
|
|||||||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
|
|
| 28.09.2021, 09:24 | |
|
1
|
|
|
Модератор
|
||||
| 28.09.2021, 10:58 [ТС] | ||||
|
Но эта часть сейчас всё равно не работает. Код не выполняется независимо от выбора варианта, так как не существует искомого пути. Но по какой причине значения сохраняются между сеансами? И даже если из bin скопировать сборку в другое местоположение, то данные занесённые в Debug Студии будут видны при запуске из другого расположения. И наоборот.
0
|
||||
|
Модератор
|
|
| 28.09.2021, 11:20 [ТС] | |
|
Usaga, HF, для лучшего понимания внёс изменения в консольный тест.
На Гите зафиксировал. Если удобнее архивом: ChoosingPackages.V2.7z Вот скрин: Как видите данные между сеансами сохраняются. Значит это точно не в памяти.
0
|
|
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 28.09.2021, 11:25 | |
|
0
|
|
|
Фрилансер
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
|
|
| 28.09.2021, 12:03 | |
|
Элд Хасп, если с БД особо дела не имели то в EF лучше сразу не лезьте))
там легко можно голову сломать прежде чем получить требуемое я для учебных / студенческих работ EF использую а для рабочих стараюсь обходится без него) посмотрите лучше на SQLite-net https://github.com/praeclarum/sqlite-net для тривиальных проектов этого обычно достаточно а для тех что посложнее есть LINQ to DB https://github.com/linq2db/linq2db
0
|
|
|
Модератор
|
|||
| 28.09.2021, 13:25 [ТС] | |||
|
И посмотрите пост выше. База создаётся и в ней можно сохранять данные. Даже если запустить несколько экземпляров приложения, данные нормально через БД передаются. И EF лучше всего подходит для этого.
0
|
|||
|
|
|||||
| 28.09.2021, 13:35 | |||||
|
В свою очередь, я запустил, убедился что не сохраняет, проверил известные пути, проверил свойство базы данных в отладке. Всё показало что данные находятся в альтернативном измерении. Добавил, работает, отчитался на форуме. ![]() Добавлено через 3 минуты Добавлено через 59 секунд Добавлено через 1 минуту
2
|
|||||
|
Модератор
|
||||||
| 28.09.2021, 14:03 [ТС] | ||||||
|
Почему-то в Core не отображаются подтянутые пакеты. А на Framework их видно. Добавлено через 1 минуту Запустили приложение заново и данных из предыдущего сеанса нет? Я тогда воще в шоке! А у меня почему они сохраняются?! Добавлено через 2 минуты По крайней мере я так думаю. Иначе я не могу объяснить почему у меня данные между сеансами сохраняются. Сохраняются даже если скопировать сборку на другой (пустой) диск. Добавлено через 1 минуту Так и есть. Хочется именно разобраться. Особенно в такой начальной элементарщине вроде. Добавлено через 45 секунд
0
|
||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 28.09.2021, 14:18 | |
|
Я ее нашел
1
|
|
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 28.09.2021, 14:21 | |
|
И Вы не EF используете
0
|
|
|
Модератор
|
||||
| 28.09.2021, 14:26 [ТС] | ||||
|
Работает у меня так же как и на Core: данные между сеансами сохраняются, обе сборки работаю с одной БД и можно сеансы запускать одновременно. Но самой БД нигде найти не могу. Просто фантастика какая-то! ![]() Добавлено через 38 секунд Добавлено через 57 секунд DBcontext - это разве не из EF? Добавлено через 2 минуты
0
|
||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 28.09.2021, 14:27 | |
|
Этот DbContext из System.Data.Entity. А в EFCore другой)))
0
|
|
|
|
||
| 28.09.2021, 14:30 | ||
|
Причём самое интересное что localDB был отстановлен. Значит она или сама умеет писать без сервиса, а регистрирует в его общем хранилище. Или же запускает localDB и потом останавливает. Никогда о таком не слышал. Видимо это из-за того что это не чистый Interop и у него какая-то абстракция EF есть. Он не может без БД жить.
0
|
||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
||
| 28.09.2021, 14:32 | ||
|
2
|
||
| 28.09.2021, 14:32 | |
|
Не удалось найти запрошенного поставщика данных (System.Data.SQLite) Установка System.Data.SQLite для Visual Studio 2015 Не могу подключиться к SQLlite (Could not load file or assembly 'System.Data.SQLite) Не работает проверка существования таблицы через метод ExecuteNonQuery() из System.Data.SQLite.dll
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|