|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13182. Ответов 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
|
||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|
| 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
|
|||||||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,749
|
|
| 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|