Flexberry ORM source code
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ChangesToSqlBTMonitor
CurrentUserService
Docker
ExternalLangDef
ICSSoft.STORMNET.Business.DRDataService
ICSSoft.STORMNET.Business.LINQProvider
ICSSoft.STORMNET.Business.LockService
ICSSoft.STORMNET.Business.MSSQLDataService
ICSSoft.STORMNET.Business.ODBCDataService
ICSSoft.STORMNET.Business.OracleDataService
ICSSoft.STORMNET.Business.PostgresDataService
ICSSoft.STORMNET.Business
ICSSoft.STORMNET.Collections
ICSSoft.STORMNET.DataObject
ICSSoft.STORMNET.FunctionalLanguage
ICSSoft.STORMNET.Tools
ICSSoft.STORMNET.UserDataTypes
NewPlatform.Flexberry.ORM.IntegratedTests
NewPlatform.Flexberry.ORM.Test.Objects
NewPlatform.Flexberry.ORM.Tests.BusinessServers
NewPlatform.Flexberry.ORM.Tests
UnityFactory
.gitignore
.travis.yml
CHANGELOG.md
ConfigTuner.ps1
Flexberry ORM Projects Dependencies.dgml
Flexberry ORM.sln
Flexberry.ruleset
LICENSE.md
NewPlatform.Flexberry.CurrentUserService.nuspec
NewPlatform.Flexberry.ORM.nuspec
NewPlatform.Flexberry.UnityFactory.nuspec
README.md
config.install.xdt
config.uninstall.xdt

README.md

Flexberry ORM

Build Status Master

Build Status Develop

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

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

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

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

Для работы с 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.DRDataService - расширение MSSQLDataService для реализации "грязного чтения" (не блокирующее чтение).
    • ICSSoft.STORMNET.Business.PostgresDataService - сервис данных для Postgres.
    • ICSSoft.STORMNET.Business.OracleDataService - сервис данных для Oracle DB.
    • ICSSoft.STORMNET.Business.ODBCDataService - сервис данных для ODBC-соединений.
  • Проекты для поддержки языка запросов (Functional Language, LINQ)
    • ICSSoft.STORMNET.FunctionalLanguage - проект с основными структурами встроенного языка запросов.
    • ExternalLangDef - расширения для языка запросов, поддерживающие композитную агрегацию в моделях.
    • ICSSoft.STORMNET.Business.LINQProvider - проект, с классами, реализующими поддержку LINQ-выражений.
  • Вспомогательные проекты
    • ICSSoft.STORMNET.Tools - различные вспомогательные классы, например, позволяющие выполнять сериализацию-десериализацию объектов данных и пр..
    • ICSSoft.STORMNET.UserDataTypes - дополнительные пользовательские типы данных, расширяющие набор, предлагаемый Microsoft .NET Framework.
    • CurrentUserService - проект, в котором определены классы, используемые для определения контекста исполнения - указание на текущего пользователя (применяется как базовый проект в прикладных системах, используется в сервисе пессимистических блокировок и системе полномочий).
    • ChangesToSqlBTMonitor - проект, реализующий логику выгрузки выполняемых со стороны сервисов данных SQL-скриптов.
    • 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 и выше, mono 4.6 и выше.

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

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

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

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

Сообщество

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

Доработка

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

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

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

Ссылки