|
Модератор
|
|||||||||||
SQLite Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.22.09.2021, 19:48. Показов 13239. Ответов 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
|
|||||
| 28.09.2021, 21:54 | |||||
|
0
|
|||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
||||||||||||
| 29.09.2021, 00:36 | ||||||||||||
Лишнее можно убрать. Таблицы не создаются. Entity Framework 6 с SQLite 3 Code First - не будет создавать таблицы
2
|
||||||||||||
|
Модератор
|
||||||||||||||||||
| 30.09.2021, 17:39 [ТС] | ||||||||||||||||||
|
БД создаёт включая весь путь. Добавил ещё заполнение начальными данными. Возможно несколько коряво:
Мысль в голове витает, но нет понимания вообще о правильности реализации подобного. Наверное, это всё же неверно. Сделал фиксацию:
0
|
||||||||||||||||||
|
|
|||
| 30.09.2021, 22:47 | |||
Вы же свою задачу какую-то решаете. Поэтому не понятно - нужно ещё про что-то высказаться или для чего это всё?Моё личное мнение - это какой то трэш. Простой код, прототип или набросок - он и выглядит просто и отражает цели задачи. У вас же накидано всё что я читал и видел из всех технологий. Я уже критиковал ваш WPF за излишнюю сложность, но там иногда это можно. А здесь "хеллоу ворлд с микросервисами". И смысл стал совсем не понятен. Вроде бы вначале было "тестовый проект для изучения SqLite". Сейчас это стало монструозом каким-то. По моему мнению проект должен был быть Точно как если бы писали для EF, но слой отвечающий за DAL должен был вынесен отдельно и там реализовано ADO с чистым SQLite. Скрыли реализацию и на паблике вроде как всё обычно. У вас же... не-до-EF.
0
|
|||
|
Модератор
|
|||||||||
| 30.09.2021, 23:29 [ТС] | |||||||||
|
Это же просто тестовое приложение. Проверял как всё работает. Главное, что в основной проект не тянутся ни какие "хвосты" от EF и сущностей для него. Добавлено через 8 минут Согласен, что это не Модели, а Репозитории. Просто начал делать с одной мыслью, а сделал по другому и уже не стал переименовывать. Мне нужно было проверить автосоздание БД SQLite и инкапсуляцию от слоёв выше всего что касается БД. Я до этого (год-полтора назад) пробовал (Пример создания приложения "Работа с комнатами в студенческих общежитиях" [WPF, SQLite, Элд Хасп]). Но тогда у меня не получилось. Почему-то в основном проекте приходилось тоже устанавливать System.Data. Толи я тогда что-то не так делал (хотя мне помогал разубираться с этим Usaga), толи в пакет внесли какие-то изменения, но сейчас получилось. И БД тогда я создавал "руками". Добавлено через 15 минут Сделал как получилось. В первоначальном варианте было:
И как их заменить по нормальному я не нашёл. Ещё пока не разобрался как решить задачу с полем Phone.ContactId. Надо чтобы невозможно было добавить c не существующиv Contact.Id, и чтобы нельзя было удалить Contact.Id и для которого есть Phone.ContactId. Делать эту проверку в Модели (то есть Репозитории) наверное не верно. Скорее всего lzk этого существуют какие-то настройки в БД. Тоже самое, наверное, есть и для отказа изменения/удаления если запись была изменена. Посмотреть чем будут отличаться эти реализации, чтобы в дальнейшем, при необходимости, уже не задумываться какой из них использовать.
0
|
|||||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|||||||
| 30.09.2021, 23:34 | |||||||
|
Добавлено через 1 минуту Вы сказали, что не нужны Вам навигационные)))
1
|
|||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|||||||
| 30.09.2021, 23:36 | |||||||
|
Конкретно это
Добавлено через 43 секунды
1
|
|||||||
|
Модератор
|
|||
| 30.09.2021, 23:40 [ТС] | |||
|
И поэтому хотел решить как без них. А сейчас получается они будут, но я никогда не буду использовать их значения. То есть они будут использоваться только для правильного формирования БД. Поэтому пытаюсь почитать побольше, собрать информацию, чтобы решить как лучше сделать. Добавлено через 2 минуты ![]() Да - это тоже попробую. И ранее вы выкладывали, что-то подобное. Я думал "отделаться" атрибутами к классам и свойствам, но похоже так не выйдет.
0
|
|||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 30.09.2021, 23:42 | |
|
0
|
|
|
Модератор
|
||
| 30.09.2021, 23:51 [ТС] | ||
|
Атрибуты - это тоже некое упрощение по обращению к Fluent API. Но вот насколько хватает функционала этого упрощения и пытаюсь разобраться. К тому же это ещё и чувствительно к используемому пакету. На EF.SQLite - возможно будет несколько иначе.
0
|
||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|
| 01.10.2021, 00:20 | |
|
0
|
|
|
Модератор
|
|||||||
| 02.10.2021, 01:10 [ТС] | |||||||
|
Разобрался как нужно создавать соединение с SQLite. Немного проще вашего решения из EFConfiguration : DbConfiguration.
0
|
|||||||
|
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
|
|||
| 02.10.2021, 22:30 | |||
![]()
0
|
|||
|
Модератор
|
|||
| 02.10.2021, 23:29 [ТС] | |||
|
У меня времени (есть основная работа) не хватает с этим разобраться. Добавлено через 51 секунду Он же из System.Data. Наверное, в нём уже есть все нужные настройки.
0
|
|||
|
Заблокирован
|
|
| 10.03.2022, 20:06 | |
|
А я решил (для начала) сделать выбор в пользу Microsoft.Data.Sqlite
0
|
|
| 10.03.2022, 20:06 | |
|
Не удалось найти запрошенного поставщика данных (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
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|