|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|
Архитектура построения БД linq2db06.01.2021, 08:43. Показов 25655. Ответов 111
Добрый день!
У меня вот такая задача. Нужно создать БД CodeFirst на linq2db. (99% что это linq2db). Эту базу будет использовать более 10 мелких приложений. Как сделать правильно, чтобы методы выборки, создания таблици и т.д. были не конкретно в каждом приложении, а вынесены в стороннюю библиотеку? Чтобы при изменении таблицы или выборки, не приходилось менять это во всех 10 приложениях, а только в одном месте. Очень бы хотелось увидеть реальный пример использования. Где посмотреть уже готовые решения на основе linq2db? Не пример использования запросов из справки linq2db, а именно реальную архитектуру построения модели и контроллера. Буду очень благодарен за любую помощь!
0
|
|
| 06.01.2021, 08:43 | |
|
Ответы с готовыми решениями:
111
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Как ускорить запрос Linq2db? |
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||||||||||||||||||||||
| 09.01.2021, 10:50 [ТС] | ||||||||||||||||||||||
|
Добавил связь и в Country
А linq2db может добавлять вот такую запись? Хочу я добавить `Город` в `City` по стране `СтарныНет` которой ещё нет в таблице `Country`? Что-то типа
Или как лучше такое добавление производить? Чтобы не отдельным запросом к Country с проверкой. С добавлением foreign key и без использования ALTER TABLE? CreateTable
Скорее всего неправильно как-то читаю. Может из-за английского, а может из-за того что я тугодум. Но читаю. В коде нашёл [Association] и решил пошагово посмотреть как это работает. Но не тут то было. Из-за недостаточности знаний, не смог запустить тесты.
0
|
||||||||||||||||||||||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
|||||
| 09.01.2021, 11:01 | |||||
|
1
|
|||||
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||||||
| 09.01.2021, 18:16 [ТС] | ||||||
|
Ещё вот такой вопрос.
Есть модель DB. А так же есть модель объектов API сервиса. Частично данные из API сохраняются в базу. И естествнно много классов в модели DB и API с одинаковыми именами. И не пару классов, а много одинаковых имён. Как лучше поступить в этом случае? Что мне приходит на ум. 1. Добавить префикс/постфикс к одной модели. Допустим модель апи сервиса Country, City, User. А модель базы данных CountryDB, CityDB, UserDB. 2. Использовать алиасы для namespace.
И какие подводные камни могут быть?
0
|
||||||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
||
| 10.01.2021, 10:19 | ||
|
1
|
||
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|||||||
| 10.01.2021, 14:23 [ТС] | |||||||
|
Как тогда лучше делать? Вот так по-моему не очень красиво
0
|
|||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
|
|
| 10.01.2021, 14:56 | |
|
BeginnerCoderCS, для этих целей был придуман Automapper
1
|
|
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||
| 10.01.2021, 18:05 [ТС] | ||
|
Шучу конечно )) Посмотрю что за зверь. p.s. Вроде только перестал задавать вопросы по использованию одной библиотеки, так вы мне ещё одну ))
0
|
||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
|
| 11.01.2021, 08:07 | |
|
BeginnerCoderCS, условно говоря, эта библиотека ничего волшебного не делает. Чисто кому лень руками маперы писать. Если нет желания или времени, то на пока эту библиотеку можно и обойти стороной.
0
|
|
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||||||||||||
| 12.01.2021, 00:56 [ТС] | ||||||||||||
|
Почитал за мапперы, и на текущий момент мне это скорее всего не нужно будет. Там частично только пересекаются данные. Тем более типы классов будут частично разными. К примеру CountryId у API это string а у БД это int так как это внешний ключ таблицы Country API класс
DB класс
Хотя я пробежался только по верхушке, может конечно и это решает автомаппер. А по namespace вопрос так и открыт ((
0
|
||||||||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 12.01.2021, 01:16 | ||
0
|
||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
|||
| 12.01.2021, 06:39 | |||
|
0
|
|||
|
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
|
||
| 12.01.2021, 15:04 | ||
|
0
|
||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
|
| 12.01.2021, 18:33 | |
|
carrotik, вряд ли тут что-то такое) Скорее всего CountryId сделали строкой по каким-то мало адекватным причинам, если там число натуральное, а не цифробуквенный код какой-то.
0
|
|
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|||||||||||||
| 13.01.2021, 15:14 [ТС] | |||||||||||||
|
Суть вот такая. Я получаю из сервиса данные строковые Id = 8767 Name = "Евгений" Country = "Россия" City = "Москва" Сервис
Но в БД у меня из этого выходит 3 таблицы со связями. User, Country, City. БД
В итоге было Country = "Россия" а стало CountryId = 1 City = "Москва" - CityId = 1 Так правильно делаю? или опять нет? Добавлено через 12 минут Архитектура построения БД linq2db
0
|
|||||||||||||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
|||
| 14.01.2021, 06:26 | |||
|
0
|
|||
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||
| 14.01.2021, 11:07 [ТС] | ||
|
Я говорю о одинаковых именах классов, и если писать полный путь namespace-ов то очень не красиво, и очень не быстро писать получается. Да и не читаемо. Выше вы сказали что переименовывать классы не нужно. Как тогда лучше обращаться к классам с одними и теми же именами, из тертьего namespace
0
|
||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
||
| 14.01.2021, 11:35 | ||
|
Добавлено через 7 минут Смотрите сами. Если вам так неудобно, то можете и названия разные давать. Но в один прекрасный момент поймёте, что названия вида OrderModelForMonthTaxCalculation не сильно-то и красивее.
1
|
||
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
||
| 22.01.2021, 09:05 [ТС] | ||
|
Подскажите каким образом, это можно будет нормально поддерживать? База MySQL. Делаю экспорт модели бд из HeidiSQL в файл sql. Но если есть хоть одна таблица то будет ошибка. Но больше интересует поддержка в дальнейшем. Допустим есть у нас таблица Country с полями Id, Name. Но в дальнейшем мне нужно будет добавить ещё поле ContinentId, и сделать внешний ключ. Мне нужно будет делать ещё один запрос, на изменение таблицы. Но затем ещё один столбец и ещё один запрос на изменение. А потом у пользователя ляжет база, и её нужно будет пересоздать, мне нужно всю эту последовательность обновлений БД хранить? А если этих обновлнений будет десятки а то и сотни, а их так и будет в итоге, то что делать тогда? Тем более, я не смогу проверить правильно ли создана БД у пользователя. Что-то я опять в тупике. Подскажите как это правильно сделать, чтобы дальнейшие изменения проходили беспроблемно. p.s. Напомню, что будет несколько приложений, которые будут использовать одну базу. То есть запросы на создание таблиц, как я понимаю должны храниться в dll в котором и сущности бд?
0
|
||
|
14724 / 9493 / 1362
Регистрация: 21.01.2016
Сообщений: 35,788
|
|
| 22.01.2021, 09:11 | |
|
BeginnerCoderCS, мы это делаем так: завели отдельную таблицу под версию базы. Все скрипты изменения базы идут последовательно, записывая имя операции (Add Email into Users table) в эту таблицу. Каждый скрипт проверяет наличие такой записи в этой таблице, и если есть, то не исполняется.
Все эти скрипты мы собираем в один SQL-файл и выполняем у всех пользователей. Получается, что какая бы версия ни была у пользователя, база обновится до актуальной корректным образом.
1
|
|
|
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
|
|
| 22.01.2021, 09:19 [ТС] | |
|
0
|
|
| 22.01.2021, 09:19 | |
|
Linq2db как изменить имя таблицы? Запрос linq2db c условием разницы времени
Как сохранить изменения сделанные в DataGridView в БД при использовании linq2db?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
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
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|