В этом репозитории располагается исходный код 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.