1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fastdev-OF.DB

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

OF.DB

  1. Данная библиотека позволяет создавать объекты сущностей и простые объекты доступа к данным на основе таблиц базы данных, предоставляет базовые функции чтения, записи, обновления и удаления данных, а также общий метод преобразования набора данных в объект сущности (реализованный с помощью кода ILEmit, высокая производительность).

  2. Предоставляет объект построителя для создания запросов, упрощает сборку SQL-условий, использует параметрический способ сборки условий запроса, что снижает риск внедрения SQL. Для больших коллекций запросов используется передача параметров в формате XML, по возможности используются параметры для построения SQL, что может снизить затраты на компиляцию SQL и повысить коэффициент использования кэша SQL.

3. Пример проекта

OF.DB.Test — это проект для тестирования OF.DB, который содержит примеры использования базы данных для создания соответствующего слоя сущностей, слоя доступа к данным и построения запросов с использованием OF.DB (включая разбиение на страницы, получение общего количества, соединение нескольких таблиц, передачу группы значений через XML и другие распространённые функции).

Описание файлов проекта:

  1. test.dbo.Blog.sql и test.dbo.User.sql содержат SQL для создания тестовых таблиц. В этом проекте используется база данных test, строка подключения находится в файле конфигурации.

  2. BlogGenerator.cs содержит код для создания сущностей и создания слоя доступа к базе данных. При обновлении необходимо передать параметры, указывающие, какие столбцы не должны обновляться (например, при создании время не должно изменяться, первичный ключ не должен передаваться). Если необходимо создать сущности и слой доступа к данным, запустите метод BlogGenerator после обеспечения создания таблицы базы данных и правильной настройки строки подключения, чтобы сгенерировать соответствующие файлы. Сгенерированные файлы находятся в корневом каталоге программы, где слой доступа к данным имеет два файла, один из которых называется {имя таблицы}Dao.cs, а другой — {имя таблицы}Dao.generate.cs. Оба файла представляют один и тот же класс, но объявлены с использованием ключевого слова partial (если вы хотите изменить логику слоя данных, рекомендуется изменить файл {имя таблицы}Dao.cs). Добавьте сгенерированные файлы в проект, и сущности и слои доступа к данным для Blog и User в этом проекте были созданы таким образом.

  3. TestRunGenerateClass.cs содержит основные методы для тестирования слоя данных сущностей.

  4. TestQueryGenerateClass.cs содержит способ построения запросов. В этом проекте класс SqlAndConditionBuilder используется для построения запросов, используя шаблон Builder. Этот класс может упростить построение запросов и предоставить методы для упрощения передачи параметров SqlParameter: (1) Для комбинированных запросов с несколькими условиями просто создайте отдельные условия запроса, и Builder автоматически определит, следует ли использовать Where или And. (2) Может динамически определять, какие связанные таблицы необходимы в соответствии с условиями запроса (для отношений ER 1:0 или N:1), что может минимизировать количество соединений таблиц и улучшить производительность. SqlAndConditionBuilder определяет, нужно ли добавлять внешние соединения таблиц во время построения, основываясь на используемых полях запроса. Например, если пользователь вводит только заголовок или идентификатор блога, то запрос будет выполнять одиночный запрос к таблице блога. Если пользователь вводит имя автора блога, запрос будет включать соединение с таблицей пользователей. Принцип заключается в том, что при построении SqlAndConditionBuilder необходимо передавать идентификаторы всех связанных таблиц (можно использовать уникальные значения, предпочтительно перечисления) и словарь псевдонимов 1, а также словарь операторов соединения 2 для соответствующих идентификаторов (основная таблица не требует передачи). При построении условий необходимо передавать идентификатор таблицы и имена столбцов, а также отслеживать, какие идентификаторы таблиц используются, чтобы можно было получить операторы соединения из словаря при генерации запроса. (3) Поддержка параметров XML. Проект предоставляет метод для преобразования списка параметров типа List в соответствующий тип SqlParameter в базе данных, а также метод для преобразования переменной в переменную типа Table. Это полезно для пакетной передачи данных в базу данных для выполнения связанных запросов (также может использоваться для пакетного ввода и обновления). Многие библиотеки реализуют пакетную передачу параметров для запросов путём объединения условий IN. Однако этот подход имеет несколько проблем. Во-первых, эффективность запросов низкая, поскольку объединение условий IN в SQL приводит к длинным запросам, что увеличивает время анализа при выполнении запросов базой данных. Во-вторых, базы данных имеют ограничения на длину SQL-запросов, и слишком большое количество параметров может привести к ошибкам усечения SQL-запроса. Кроме того, размещение значений параметров непосредственно в SQL затрудняет кэширование запросов базой данных, так как даже небольшие изменения в значениях параметров могут привести к тому, что база данных будет рассматривать их как разные запросы, требуя повторного анализа, разработки плана выполнения и компиляции каждый раз.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Общедоступная библиотека, связанная с операциями базы данных. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fastdev-OF.DB.git
git@api.gitlife.ru:oschina-mirror/fastdev-OF.DB.git
oschina-mirror
fastdev-OF.DB
fastdev-OF.DB
master