В этом репозитории располагается исходный код Flexberry ORM - фреймворка для объектно-реляционного отображения для Microsoft .NET Framework.
Для работы с Flexberry ORM требуется определение классов объектов данных и готовая БД. Данные классы можно реализовать вручную, но более удобный способ - использовать подход Model Driven Architecture и проектировать приложение в UML-редакторе Flexberry Designer с последующей генерацией полноценного кода на C# и SQL-скриптов для создания или модификации структуры таблиц БД. Данный подход не накладывает ограничений на разрабатываемые приложения, а напротив позволяет иметь хотя бы минимальное описание архитектуры приложения в виде UML-диаграмм.
Для установки Flexberry ORM
в проект следует воспользоваться NuGet-пакетом.
Данное решение содержит несколько проектов, которые можно условно разделить на следующие категории:
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-соединений.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
- бизнес-логика объектов проекта с тестами.Все проекты в решении поддерживают сборку под 3 версии .NET Framework
: 3.5
, 4.0
, 4.5
. Данная возможность реализована за счёт особой настройки csproj-файлов, когда с каждой конфигурацией для сборки указывается и TargetFramework.
Тесты разделены на 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.