|
4 / 4 / 5
Регистрация: 13.08.2014
Сообщений: 96
|
|
Промежуточные классы при работе с БД31.01.2017, 09:50. Показов 1654. Ответов 11
Метки нет (Все метки)
Всем привет!
Столкнулся с таким вопросом, не знаю как лучше реализовать. Есть три класса Класс1, Класс2, Класс3, каждому классу соответствует таблица в базе данных таблица1, таблица2, таблица3..Все три класса содержать одно и то же поле number. По полю number, делаю выборку из базы данных (пользуюсь join), соотвественно получают выборку из базы данных в которой содержаться поля из класса1, класса2, класс3. Для вывода данных, нужно создавать Класс4, где находятся все поля Класс1, Класса2, Класса3 или есть какой то другое решение?
0
|
|
| 31.01.2017, 09:50 | |
|
Ответы с готовыми решениями:
11
Как вычеслить промежуточные X,Y при движение от А к Б Исключение при работе с pictureBox (задание картинки при работе с формой) Грабли при работе STM32f4 при работе с ftp |
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,259
|
|
| 31.01.2017, 09:52 | |
|
Что-то не очень понятно в чём вопрос...
0
|
|
|
|
|||||||||||
| 31.01.2017, 11:14 | |||||||||||
|
Попробуйте
0
|
|||||||||||
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
| 31.01.2017, 12:37 | |
|
Dour, какой библиотекой вы пользуетесь для взаимодействия с бд, просто ado.net или какой нибудь надстройкой над ним, например entity framework?
Вообще странно что у вас сразу нету класс4, обычно есть уже какая то сущность, которую и раскладывают по отдельным таблицам, а потом собирают назад.
0
|
|
|
4 / 4 / 5
Регистрация: 13.08.2014
Сообщений: 96
|
|
| 31.01.2017, 12:46 [ТС] | |
|
Лучше на примере объясню. В БД есть таблицы Таблица1, Таблица2, Таблица3, в которых есть поля:
Таблица1: number, name, lastname; Таблица2: number, note, date; Таблица3: number, type, adress. В программе есть классы, с полями: Класс1: Number, Name, LastName; Класс2: Number, Note, Date; Класс3: Number, Type, Adress; Делаю запрос к базе данных select t1.name, t1.lastname, t2.note, t2.date, t3.type, t3.adress from t1 inner join t2 on (t1.number=t2.number) inner join t3 on (t1.number=t3.number) where t1.number = 1; Получаю данные, в которых содержаться поля из трех классов. Как лучше сохранить эти данные, для дальнейшей работы? Создавать еще один класс, в котором содержаться поля из Класса1, Класса2, Класса3 ? Нашел вариант использования коллекции Dictionary<string, Type> Class = new Dictionary<string, Type>() Добавлено через 2 минуты Пользуюсь, Mysql, пишу на C# Возможно ошибся веткой
0
|
|
|
|
|
| 31.01.2017, 14:13 | |
|
Dour,
В целом, реляционные базы данных и объектная модель плохо сочетаются между собой. Поэтому вам придется чем-то пожертвовать. Либо хорошо работать с СУБД, а внутри программы использовать слаботипизированные классы типа DataSet, DataTable, DataView и т.д. Также есть вариант LINQtoSQL. Либо хорошо работать с ООП моделью, но тогда вы можете делать только простые запросы к БД типа Select, но без inner join. А все связи реализовывать уже внутри ваших классов. Также можно использовать EntityFramework, который по сути делает то же самое. Ну а так, да, придется писать отдельный класс на каждый такой SQL запрос. Только смысла в этом особого нет. Пользы от ООП здесь не будет, зато будет лишний гемор по написанию отдельных классов на каждый чих.
0
|
|
|
4 / 4 / 5
Регистрация: 13.08.2014
Сообщений: 96
|
|
| 31.01.2017, 22:03 [ТС] | |
|
Спасибо, немного просветлили
0
|
|
|
16 / 16 / 6
Регистрация: 01.03.2014
Сообщений: 122
|
|
| 03.02.2017, 03:48 | |
|
Доброго времени суток.
У меня такой подход к твоей теме. Есть данные, их делим на те которыми пользуемся в настоящий момент и те которые храним. За хранение отвечает полностью SQL, за пользование ты со своими классами. Допустим на пользовательской странице мне надо разместить следующую информацию (индекс, артикул, фото, описание, количество, размеры и пр.) для этого у меня есть класс (ПродуктВКаталоге) и соответсвующий ему класс для обращения к базе данных (чтение и записи инфы для ПродуктаВКаталоге). Информация для длительного хранения хранится в таблицах в базе данных, как, ты сам хочешь. Для удобства чтения и записи инфы в БД есть вьюхи и хранимые процедуры (это инструмент БД). Для другой страницы/формы есть класс ПродуктПолностью, где отображается вся информация о сущность "Продукт". Реализовано наследование, т.е. абстрактный класс для данных clData и для чтения и отображения данных clStore. В них собраны общие для всех классов инструменты (public Id, protection string ConnectStr, protection string CommandSql, protection string ErrorSql) Когда таким образом разделишь работу, то процесс создания конечного приложения ускорится. Грубо говоря ты на пару деньков погружаешься в SQL с его логикой, организуешь там всю информацию, готовишь ее к чтению и записи. Потом работаешь недельку с приложением. Я считаю, что все выборки по условиям и прочая лобуда с обработкой данных должна быть реализована в запросах SQL. Зачем множить информацию запихивая ее в классы, зачем писать код для выборки по условию, сортировки данных и прочее, когда ученые диссертации защищали о том как лучше перебирать инфу. Поэтому надстройки для работы с данными (типа Ентити) не использую, а изучение sql потребуется не на много больше, чем для работы с такими надстройками.
0
|
|
|
4 / 4 / 5
Регистрация: 13.08.2014
Сообщений: 96
|
|
| 03.02.2017, 09:25 [ТС] | |
|
Просто есть такие приложения, в которых пользователь сам строит свои отчеты, то есть есть менюшка, он выбирает нужные поля(полей может быть много и из разных таблиц), делает элементарные условия и ему выдается готовый отчет. Вот мне интересен последний этап, как в таких приложениях реализован последний этап, когда происходит вывод отчета и формирования его.
0
|
|
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
||
| 03.02.2017, 10:17 | ||
|
Да и в плане многопользовательской среды - все очень грустно будет
0
|
||
|
16 / 16 / 6
Регистрация: 01.03.2014
Сообщений: 122
|
|
| 07.02.2017, 06:59 | |
|
Может проще пользователю установить Sql server manager, дать нужные права и пусть рулит?
0
|
|
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,259
|
||
| 07.02.2017, 07:09 | ||
|
0
|
||
| 07.02.2017, 07:09 | |
|
Помогаю со студенческими работами здесь
12
Нужны ли дополнительные классы в работе с формами Аппаратная ошибка видео (Ошибка при работе с видеоустройствами привела к некорректной работе Windows). Нарушение прав доступа при чтении при работе с большим массивом
Ошибка при использовании ADODB.CONNECTION при работе с dbf-файлом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|