Skip to content

Flexberry/NewPlatform.Flexberry.ORM

develop
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

Flexberry ORM

CI

В этом репозитории располагается исходный код Flexberry ORM - фреймворка для объектно-реляционного отображения для Microsoft .NET.

Ключевые особенности

  • Концепция представлений (проекций).
  • Поддержка различных СУБД «из коробки».
  • Полная настройка названий таблиц, полей и т.п. в БД.
  • Первичные ключи произвольного типа.
  • Отображение в БД полей произвольных типов.
  • Перехват момента сохранения в БД и выполнение дополнительных действий.
  • Широкие возможности по кастомизации, включая возможность управления запросами.
  • Поддержка Mono и .NET Core 3.1 (отсутствие неуправляемого кода).

Использование

Для работы с Flexberry ORM требуется определение классов объектов данных и готовая БД. Данные классы можно реализовать вручную, но более удобный способ - использовать подход Model Driven Architecture и проектировать приложение в UML-редакторе Flexberry Designer с последующей генерацией полноценного кода на C# и SQL-скриптов для создания или модификации структуры таблиц БД. Данный подход не накладывает ограничений на разрабатываемые приложения, а напротив позволяет иметь хотя бы минимальное описание архитектуры приложения в виде UML-диаграмм. Для установки Flexberry ORM в проект следует воспользоваться NuGet-пакетом.

Структура проекта

Данное решение содержит несколько проектов, которые можно условно разделить на следующие категории:

  • Ядро ORM - базовые проекты, которые позволяют реализовывать объектно-реляционное отображение
    • ICSSoft.STORMNET.DataObject - основной проект, в котором располагаются классы для работы с объектами данных, их связями, проекциями и пр..
    • ICSSoft.STORMNET.Collections - реализация дополнительных типов коллекций, которые применяются в других проектах данного решения.
    • ICSSoft.STORMNET.Business - основной проект с бизнес-логикой построения SQL-запросов и интерпретации полученных от СУБД результатов.
  • Проекты для поддержки конкретных СУБД
    • ICSSoft.STORMNET.Business.MSSQLDataService - сервис данных для Microsoft SQL Server (в т.ч. SQL Azure).
    • ICSSoft.STORMNET.Business.PostgresDataService - сервис данных для Postgres.
    • ICSSoft.STORMNET.Business.OracleDataService - сервис данных для Oracle DB.
    • Дополнительные сервисы данных располагаются в отдельных репозиториях, например, ClickHouseDataService или MongoDbDataService.
  • Проекты для поддержки языка запросов (Functional Language, LINQ)
    • ICSSoft.STORMNET.FunctionalLanguage - проект с основными структурами встроенного языка запросов.
    • ICSSoft.STORMNET.Business.ExternalLangDef - расширения для языка запросов, поддерживающие композитную агрегацию в моделях.
    • ICSSoft.STORMNET.Business.LINQProvider - проект, с классами, реализующими поддержку LINQ-выражений.
  • Вспомогательные проекты
    • ICSSoft.STORMNET.Tools - различные вспомогательные классы, например, позволяющие выполнять сериализацию-десериализацию объектов данных и пр..
    • ICSSoft.STORMNET.UserDataTypes - дополнительные пользовательские типы данных, расширяющие набор, предлагаемый Microsoft .NET Framework.
    • NewPlatform.Flexberry.ORM.CurrentUserService - проект, в котором определены классы, используемые для определения контекста исполнения - указание на текущего пользователя (применяется как базовый проект в прикладных системах, используется в сервисе пессимистических блокировок и системе полномочий).
    • NewPlatform.Flexberry.ORM.UnityFactory - проект, реализующий интеграцию с Unity Container - DI.
    • ICSSoft.STORMNET.Business.LockService - сервис пессимистических блокировок, позволяет избежать конфликтов при работе нескольких пользователей с одними и теми же данными.
  • Проекты для тестов
    • NewPlatform.Flexberry.ORM.Tests - проект с автономными тестами.
    • NewPlatform.Flexberry.ORM.IntegratedTests - проект с интеграционными тестами (для их исполнения требуются различные СУБД).
    • NewPlatform.Flexberry.ORM.Tests.Objects - объекты для проекта с тестами
    • NewPlatform.Flexberry.ORM.Tests.BusinessServers - бизнес-логика объектов проекта с тестами.

Целевая платформа

Поддеживается Microsoft .NET 4.5, 4.6.1, .NET Core 3.1, mono 4.6 и выше.

Тестирование

Тесты разделены на 2 проекта - автономные и интеграционные тесты. Для выполнения интеграционных тестов требуется наличие СУБД: Microsoft SQL, Postgres, Oracle. Соответствующие строки соединения задаются в конфигурационном файле проекта с интеграционными тестами. При выполнении тестов для каждого тестового метода создаётся временная БД (скрипты есть в проекте с интеграционными тестами). Структура данных для тестов сгенерирована при помощи Flexberry Designer, метаданные выгружены в виде crp-файла.

Документация

Документация разработчика размещается в разделе Flexberry ORM на сайте https://flexberry.github.io. Автогенерируемая документация по API размещается в ветке gh-pages и доступна пользователям по адресу: https://flexberry.github.io/NewPlatform.Flexberry.ORM/autodoc/develop/

Сообщество

Основным способом распространения Flexberry ORM является NuGet-пакет. Если во время использования этого фреймворка вы обнаружили ошибку или проблему, то можно завести Issue или исправить ошибку и отправить в этот репозиторий соответствующий Pool Request.

Доработка

Исправление ошибок приветствуется, технические детали можно выяснить в чате или непосредственно в описании Issue. Добавление новой функциональности рекомендуется согласовывать с авторами, поскольку принятие Pool Request в этом случае может быть затруднено.

Техническая поддержка

Авторы оставляют за собой право выполнять доработки и исправление ошибок самостоятельно без каких-либо гарантий по срокам. В случае необходимости получения приоритетной технической поддержки с фиксированными сроками, то условия проведения данной работы можно обговорить в частном порядке по E-Mail.

Ссылки