diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index b1d7cc37..69fa58e6 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -10,10 +10,10 @@ jobs: name: Build and analyze runs-on: windows-latest steps: - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: '17' - uses: actions/checkout@v2 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis diff --git a/CHANGELOG.md b/CHANGELOG.md index 462c05e7..63fc3877 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ # Flexberry ORM ODataService Changelog All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). - ## [Unreleased] ### Added @@ -16,9 +15,19 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed -## [7.1.1] - 2023.06.08 +## [7.2.0] - 2024.03.27 ### Added +1. `updateViews` parameter of `DefaultDataObjectEdmModelBuilder` class. It allows to change update views for data objects (update view is used for loading a data object during OData update requests). + +### Changed +1. Updated Flexberry ORM up to 7.2.0. + +### Fixed +1. Fixed loading of object with crushing of already loaded masters. +2. Fixed loading of details. + +## [7.1.1] - 2023.06.08 ### Changed 1. Updated `NewPlatform.Flexberry.ORM` up to `7.1.1`. @@ -111,7 +120,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). 3. Support for limits on master details. 4. Support for limits on pseudodetails. 5. Decode Excel export column name. -6. HttpConfiguretion MapDataObjectRoute() extension method. +6. HttpConfiguretion MapDataObjectRoute() extension method. ### Changed @@ -165,13 +174,13 @@ This project adheres to [Semantic Versioning](http://semver.org/). 3. Add support actions. 4. Add handler, called after exception appears. 5. In user functions and actions add possibility to return collections of primitive types and enums. In actions add possibility to use primitive types and enums as parameters. - + ### Fixed 1. Fix reading properties of files. 2. Fix error which occured in Mono in method `DefaultODataPathHandler.Parse(IEdmModel model, string serviceRoot, string odataPath)`. 3. Fix errors in work of user functions. 4. Fix error in association object enumeration filtration. - + ### Changed 1. Update dependencies. 2. Update ODataService package version to according ORM package version. diff --git a/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj b/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj index 6ab9fd4b..d4084413 100644 --- a/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj +++ b/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj @@ -21,7 +21,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj b/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj index 38e6ceb5..0592f0ef 100644 --- a/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj +++ b/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj @@ -22,7 +22,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/NewPlatform.Flexberry.ORM.ODataService.nuspec b/NewPlatform.Flexberry.ORM.ODataService.nuspec index 548bd86f..baa4e56b 100644 --- a/NewPlatform.Flexberry.ORM.ODataService.nuspec +++ b/NewPlatform.Flexberry.ORM.ODataService.nuspec @@ -1,115 +1,115 @@ - - - - NewPlatform.Flexberry.ORM.ODataService - 7.2.0-alpha01 - Flexberry ORM ODataService - New Platform Ltd. - New Platform Ltd. - http://flexberry.ru/License-FlexberryOrm-Runtime - https://flexberry.net/ru/developers-flexberry-orm.html - https://flexberry.net/img/logo-color.png - true - Flexberry ORM OData Service Package. - - Added - 1. Helper class `DataObjectEdmModelDependencies` (it helps send named settings of Unity to class `DataObjectEdmModel`). - - Changed - 1. Updated `NewPlatform.Flexberry.ORM` up to `7.2.0-alpha02`. - 2. Constructor of class `DataObjectEdmModel` (it now needs extra DI initialization). - 3. Constructor of class `DefaultDataObjectEdmModelBuilder` (it is factory for class `DataObjectEdmModel`). - 4. Constructor of class `DefaultOfflineManager`. - 5. Constructor of class `OfflineAuditService`. - - Copyright New Platform Ltd 2023 - Flexberry ORM OData ODataService - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + NewPlatform.Flexberry.ORM.ODataService + 8.0.0-beta01 + Flexberry ORM ODataService + New Platform Ltd. + New Platform Ltd. + http://flexberry.ru/License-FlexberryOrm-Runtime + https://flexberry.net/ru/developers-flexberry-orm.html + https://flexberry.net/img/logo-color.png + true + Flexberry ORM OData Service Package. + + Added + 1. Helper class `DataObjectEdmModelDependencies` (it helps send named settings of Unity to class `DataObjectEdmModel`). + + Changed + 1. Updated `NewPlatform.Flexberry.ORM` up to `8.0.0-beta01`. + 2. Constructor of class `DataObjectEdmModel` (it now needs extra DI initialization). + 3. Constructor of class `DefaultDataObjectEdmModelBuilder` (it is factory for class `DataObjectEdmModel`). + 4. Constructor of class `DefaultOfflineManager`. + 5. Constructor of class `OfflineAuditService`. + + Copyright New Platform Ltd 2024 + Flexberry ORM OData ODataService + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NewPlatform.Flexberry.ORM.ODataService/Controllers/DataObjectController.ModifyData.cs b/NewPlatform.Flexberry.ORM.ODataService/Controllers/DataObjectController.ModifyData.cs index 074b815d..e5b682bd 100644 --- a/NewPlatform.Flexberry.ORM.ODataService/Controllers/DataObjectController.ModifyData.cs +++ b/NewPlatform.Flexberry.ORM.ODataService/Controllers/DataObjectController.ModifyData.cs @@ -50,6 +50,16 @@ public partial class DataObjectController /// private List _removingFileDescriptions = new List(); + /// + /// Кэш типов, у которых одинакового типа детейлы и мастера. + /// + private List _typesWithSameDetailAndMaster = new List(); + + /// + /// Кэш типов, у которых нет одинакового типа детейлов и мастеров. + /// + private List _typesWithNotSameDetailAndMaster = new List(); + /// /// Создание сущности и всех связанных. При существовании в БД произойдёт обновление. /// @@ -254,7 +264,38 @@ private NoContentResult DeleteEntity(object key) } Init(); - var obj = DataObjectCache.CreateDataObject(type, key); + + /* В ситуации, когда мастер и детейл одного типа, ORM без подгрузки копии данных не может корректно разобрать порядок, + * в котором объекты должны быть удалены. + */ + bool needDataCopyLoad = _typesWithSameDetailAndMaster.Contains(type); + if (!_typesWithNotSameDetailAndMaster.Contains(type) && !needDataCopyLoad) + { + string[] props = Information.GetAllPropertyNames(type); + int length = props.Length; + int index = 0; + + while (!needDataCopyLoad && index < length) + { + string prop = props[index]; + Type propType = Information.GetPropertyType(type, prop); + needDataCopyLoad = propType.IsSubclassOf(typeof(DataObject)) && Information.GetDetailArrayPropertyName(type, propType) != null; + + index++; + } + } + + DataObject obj = null; + if (!needDataCopyLoad) + { + obj = DataObjectCache.CreateDataObject(type, key); + _typesWithNotSameDetailAndMaster.Add(type); + } + else + { + obj = LoadObject(type, key.ToString()); + _typesWithSameDetailAndMaster.Add(type); + } // Удаляем объект с заданным ключем. // Детейлы удалятся вместе с агрегатором автоматически. @@ -635,7 +676,7 @@ private DataObject UpdateObject(EdmEntityObject edmEntity, object key) { // Создадим объект данных по пришедшей сущности. // В переменной objs сформируем список всех объектов для обновления в нужном порядке: сам объект и зависимые всех уровней. - DataObject obj = GetDataObjectByEdmEntity(edmEntity, key, objs); + DataObject obj = GetDataObjectByEdmEntity(edmEntity, key, objs, useUpdateView: true); for (int i = 0; i < objs.Count; i++) { @@ -698,12 +739,13 @@ private DataObject UpdateObject(EdmEntityObject edmEntity, object key) } /// - /// Получить объект данных по ключу: если объект есть в хранилище, то возвращается загруженным по представлению по умолчанию, иначе - создаётся новый. + /// Получить объект данных по ключу: если объект есть в хранилище, то возвращается загруженным по представлению , иначе - создаётся новый. /// /// Тип объекта, не может быть null. - /// Значение ключа.> + /// Значение ключа. + /// Представление для загрузки объекта. /// Объект данных. - private DataObject ReturnDataObject(Type objType, object keyValue) + private DataObject ReturnDataObject(Type objType, object keyValue, View view) { if (objType == null) { @@ -713,7 +755,6 @@ private DataObject ReturnDataObject(Type objType, object keyValue) if (keyValue != null) { DataObject dataObjectFromCache = DataObjectCache.GetLivingDataObject(objType, keyValue); - View view = _model.GetDataObjectDefaultView(objType); if (dataObjectFromCache != null) { @@ -722,7 +763,13 @@ private DataObject ReturnDataObject(Type objType, object keyValue) && dataObjectFromCache.GetLoadingState() != LoadingState.Loaded) { // Для обратной совместимости сравним перечень загруженных свойств и свойств в представлении. - // TODO: удалить эту проверку после стабилизации версии 5.1.0. + /* Данный код срабатывает, например, если в кэше был объект, который загрузился только на уровне первичного ключа. + * + * Данный код также срабатывает в следующей ситуации: есть класс А, у него детейл Б, у которого есть наследник В. + * При загрузке объекта класса А подгрузятся его детейлы, однако они будут подгружены по представлению, которое соответствует классу Б, даже если детейлы класса В. + * Таким образом, в кэше окажутся объекты класса В, которые загружены только по свойствам Б. Раз не все свойства подгружены, то состояние LightLoaded. + * Догружать необходимо только те свойства, что ещё не загружались (потому что загруженные уже могут быть изменены). + */ string[] loadedProps = dataObjectFromCache.GetLoadedProperties(); IEnumerable ownProps = view.Properties.Where(p => !p.Name.Contains('.')); if (!ownProps.All(p => loadedProps.Contains(p.Name))) @@ -731,7 +778,7 @@ private DataObject ReturnDataObject(Type objType, object keyValue) View miniView = view.Clone(); DetailInView[] miniViewDetails = miniView.Details; miniView.Details = new DetailInView[0]; - _dataService.LoadObject(miniView, dataObjectFromCache, false, true, DataObjectCache); + _dataService.SafeLoadWithMasters(miniView, dataObjectFromCache, DataObjectCache); if (miniViewDetails.Length > 0) { @@ -782,6 +829,28 @@ private DataObject ReturnDataObject(Type objType, object keyValue) return obj; } + /// + /// Добавляет объект данных в список на обновление, если его там ещё нет. + /// + /// Список на обновление. + /// Объект данных, который добавляем. + /// Добавлять в конец списка. + private static void AddObjectToUpdate(List objsToUpdate, DataObject dataObject, bool insertToEnd) + { + bool objAlreadyExists = objsToUpdate.Any(o => PKHelper.EQDataObject(o, dataObject, false)); + if (!objAlreadyExists) + { + if (insertToEnd) + { + objsToUpdate.Add(dataObject); // Добавляем в конец списка. + } else + { + objsToUpdate.Insert(0, dataObject); // Добавляем объект в начало списка. + } + + } + } + /// /// Построение объекта данных по сущности OData. /// @@ -789,21 +858,20 @@ private DataObject ReturnDataObject(Type objType, object keyValue) /// Значение ключевого поля сущности. /// Список объектов для обновления. /// Признак, что объект добавляется в конец списка обновления. + /// Использовать представление для обновления (вместо представления по умолчанию). /// Объект данных. - private DataObject GetDataObjectByEdmEntity(EdmEntityObject edmEntity, object key, List dObjs, bool endObject = false) + private DataObject GetDataObjectByEdmEntity(EdmEntityObject edmEntity, object key, List dObjs, bool endObject = false, bool useUpdateView = false) { if (edmEntity == null) { return null; } - IEdmEntityType entityType = (IEdmEntityType)edmEntity.ActualEdmType; - Type objType = _model.GetDataObjectType(_model.GetEdmEntitySet(entityType).Name); - // Значение свойства. object value; // Получим значение ключа. + IEdmEntityType entityType = (IEdmEntityType)edmEntity.ActualEdmType; IEnumerable entityProps = entityType.Properties().ToList(); var keyProperty = entityProps.FirstOrDefault(prop => prop.Name == _model.KeyPropertyName); if (key != null) @@ -815,26 +883,24 @@ private DataObject GetDataObjectByEdmEntity(EdmEntityObject edmEntity, object ke edmEntity.TryGetPropertyValue(keyProperty.Name, out value); } - // Загрузим объект из хранилища, если он там есть (используем представление по умолчанию), или создадим, если нет, но только для POST. + // Загрузим объект из хранилища, если он там есть, или создадим, если нет, но только для POST. // Тем самым гарантируем загруженность свойств при необходимости обновления и установку нужного статуса. - DataObject obj = ReturnDataObject(objType, value); + Type objType = _model.GetDataObjectType(edmEntity); - // Добавляем объект в список для обновления, если там ещё нет объекта с таким ключом. - var objInList = dObjs.FirstOrDefault(o => PKHelper.EQDataObject(o, obj, false)); - if (objInList == null) + View view = null; + if (useUpdateView) { - if (!endObject) - { - // Добавляем объект в начало списка. - dObjs.Insert(0, obj); - } - else - { - // Добавляем в конец списка. - dObjs.Add(obj); - } + view = _model.GetDataObjectUpdateView(objType) ?? _model.GetDataObjectDefaultView(objType); + } else + { + view = _model.GetDataObjectDefaultView(objType); } + DataObject obj = ReturnDataObject(objType, value, view); + + // Добавляем объект в список для обновления, если там ещё нет объекта с таким ключом. + AddObjectToUpdate(dObjs, obj, endObject); + // Все свойства объекта данных означим из пришедшей сущности, если они были там установлены(изменены). string agregatorPropertyName = Information.GetAgregatePropertyName(objType); IEnumerable changedPropNames = edmEntity.GetChangedPropertyNames(); @@ -876,7 +942,7 @@ private DataObject GetDataObjectByEdmEntity(EdmEntityObject edmEntity, object ke { // Порядок вставки влияет на порядок отправки объектов в UpdateObjects это в свою очередь влияет на то, как срабатывают бизнес-серверы. Бизнес-сервер мастера должен сработать после, а агрегатора перед этим объектом. bool insertIntoEnd = string.IsNullOrEmpty(agregatorPropertyName); - DataObject master = GetDataObjectByEdmEntity(edmMaster, null, dObjs, insertIntoEnd); + DataObject master = GetDataObjectByEdmEntity(edmMaster, null, dObjs, insertIntoEnd, useUpdateView); Information.SetPropValueByName(obj, dataObjectPropName, master); @@ -913,7 +979,8 @@ private DataObject GetDataObjectByEdmEntity(EdmEntityObject edmEntity, object ke (EdmEntityObject)edmEnt, null, dObjs, - true); + true, + useUpdateView); if (det.__PrimaryKey == null) { @@ -1008,20 +1075,7 @@ private DataObject GetDataObjectByEdmEntity(EdmEntityObject edmEntity, object ke if (agregator != null) { - DataObject existObject = dObjs.FirstOrDefault(o => PKHelper.EQDataObject(o, agregator, false)); - if (existObject == null) - { - if (!endObject) - { - // Добавляем объект в начало списка. - dObjs.Insert(0, agregator); - } - else - { - // Добавляем в конец списка. - dObjs.Add(agregator); - } - } + AddObjectToUpdate(dObjs, agregator, endObject); } } diff --git a/NewPlatform.Flexberry.ORM.ODataService/Extensions/DataServiceExtensions.cs b/NewPlatform.Flexberry.ORM.ODataService/Extensions/DataServiceExtensions.cs index 9d0ddd9b..b7639b38 100644 --- a/NewPlatform.Flexberry.ORM.ODataService/Extensions/DataServiceExtensions.cs +++ b/NewPlatform.Flexberry.ORM.ODataService/Extensions/DataServiceExtensions.cs @@ -34,6 +34,53 @@ public static object Execute(this SQLDataService dataService, Type dataObjectTyp return queryProvider.Execute(expression); } + /// + /// Загрузка объекта с его мастерами (объект должен быть не изменнённый и не до конца загруженный). + /// С мастерами необходимо обращаться аккуратно: если в кэше уже есть мастер, то нужно эту ситуацию разрешить, + /// поскольку иначе стандартная загрузка перетрёт данные мастера в кэше (и если он там изменён, то все изменения будут потеряны). + /// + /// Экземпляр сервиса данных. + /// Представление объекта с мастерами. + /// Объект данных, в который будет производиться загрузка. + /// Текущий кэш объектов данных (в данном кэше ранее существующие там объекты не должны быть перетёрты). + public static void SafeLoadWithMasters( + this IDataService dataService, View view, ICSSoft.STORMNET.DataObject dobjectFromCache, DataObjectCache dataObjectCache) + { + if (dataService == null) + { + throw new ArgumentNullException(nameof(dataService)); + } + + if (view == null) + { + throw new ArgumentNullException(nameof(view)); + } + + if (dobjectFromCache == null) + { + throw new ArgumentNullException(nameof(dobjectFromCache)); + } + + if (dataObjectCache == null) + { + throw new ArgumentNullException(nameof(dataObjectCache)); + } + + // Прогружается пустой объект, чтобы избежать риска перетирания основного. + DataObject createdObject = (DataObject)Activator.CreateInstance(dobjectFromCache.GetType()); + createdObject.SetExistObjectPrimaryKey(dobjectFromCache.__PrimaryKey); + + // Используется отдельный кэш, чтобы не перетереть данные в основном кэше. + DataObjectCache specialCache = new DataObjectCache(); + specialCache.StartCaching(false); + specialCache.AddDataObject(createdObject); + dataService.LoadObject(view, createdObject, false, true, specialCache); + specialCache.StopCaching(); + + // Перенос данных из одного объекта в другой. + ProperUpdateOfObject(dobjectFromCache, createdObject, dataObjectCache, specialCache); + } + /// /// Загрузка детейлов с сохранением состояния изменения. /// @@ -122,20 +169,19 @@ public static void SafeLoadDetails(this IDataService dataService, View view, ILi lcs.LimitFunction = FunctionBuilder.BuildIn(agregatorPropertyName, SQLWhereLanguageDef.LanguageDef.GetObjectTypeForNetType(agregatorKeyType), keys); // Нужно соблюсти единственность инстанций агрегаторов при вычитке, поэтому реализуем отдельный кеш. Смешивать с кешем dataObjectCache нельзя, поскольку в предстоящей выборке будут те же самые детейлы (значения в кеше затрутся). + // Агрегаторы в кэш не помещаем. От помещения агрегаторов в кэш возникают неконтролируемые сбои основного кэша. DataObjectCache agregatorCache = new DataObjectCache(); agregatorCache.StartCaching(false); - foreach (DataObject agregator in agregators) - { - agregatorCache.AddDataObject(agregator); - } // Вычитываются детейлы одного типа, но для нескольких инстанций агрегаторов (оптимизируем количество SQL-запросов). DataObject[] loadedDetails = dataService.LoadObjects(lcs, agregatorCache); agregatorCache.StopCaching(); + Dictionary extraCacheForAgregators = new Dictionary(); foreach (DataObject agregator in agregators) { agregator.AddLoadedProperties(detailInView.Name); + extraCacheForAgregators.Add(agregator.__PrimaryKey, agregator); } // Ввиду того, что агрегаторы нам пришли готовые с пустыми коллекциями детейлов, заполняем детейлы по агрегаторам значениями из кеша или из базы. @@ -143,7 +189,8 @@ public static void SafeLoadDetails(this IDataService dataService, View view, ILi List toLoadSecondDetails = new List(); foreach (DataObject loadedDetail in loadedDetails) { - DataObject agregator = (DataObject)Information.GetPropValueByName(loadedDetail, agregatorPropertyName); + DataObject agregatorTemp = (DataObject)Information.GetPropValueByName(loadedDetail, agregatorPropertyName); + DataObject agregator = extraCacheForAgregators[agregatorTemp.__PrimaryKey]; object detailPrimaryKey = loadedDetail.__PrimaryKey; DataObject detailFromCache = dataObjectCache.GetLivingDataObject(loadedDetail.GetType(), detailPrimaryKey); @@ -179,6 +226,37 @@ public static void SafeLoadDetails(this IDataService dataService, View view, ILi } } + /// + /// Догрузка объекта по указанному представлению, с загрузкой детейлов с сохранением состояния изменения. + /// + /// Экземпляр сервиса данных. + /// Объект данных, который нужно догрузить. + /// Представление, которое используется для догрузки. + /// Кеш объектов данных. + public static void SafeLoadObject(this IDataService dataService, DataObject dataObject, View view, DataObjectCache dataObjectCache) + { + if (dataService == null) + { + throw new ArgumentNullException(nameof(dataService)); + } + + if (view == null) + { + throw new ArgumentNullException(nameof(view)); + } + + // Вычитывать объект сразу с детейлами нельзя, поскольку в этой же транзакции могут уже оказаться отдельные операции с детейлами и перевычитка затрёт эти изменения. + View miniView = view.Clone(); + DetailInView[] miniViewDetails = miniView.Details; + miniView.Details = new DetailInView[0]; + dataService.LoadObject(miniView, dataObject, false, true, dataObjectCache); + + if (miniViewDetails.Length > 0) + { + dataService.SafeLoadDetails(view, new DataObject[] { dataObject }, dataObjectCache); + } + } + /// /// Add detail object to agregator according detail type. /// @@ -226,5 +304,116 @@ public static void AddDetail(this DataObject agregator, DataObject detail) LogService.LogWarn($"Detail type {detailType.AssemblyQualifiedName} not found in agregator of type {agregatorType.AssemblyQualifiedName}."); } } + + + /// + /// Перенос означенных свойств из свежезагруженного объекта в основной, расположенный в основном кэше. + /// + /// Основной объект, куда необходимо копировать значения свойств. + /// Свежезагруженный объект. + /// Основной кэш. + /// Локальный кэш, куда была выполнена свежая прогрузка. + private static void ProperUpdateOfObject(DataObject currentObject, DataObject loadedObjectLocal, DataObjectCache dataObjectCache, DataObjectCache dataObjectCacheLocal) + { + if (currentObject == null) + { + throw new ArgumentNullException(nameof(currentObject)); + } + + if (loadedObjectLocal == null) + { + throw new ArgumentNullException(nameof(loadedObjectLocal)); + } + + if (dataObjectCache == null) + { + throw new ArgumentNullException(nameof(dataObjectCache)); + } + + if (dataObjectCacheLocal == null) + { + throw new ArgumentNullException(nameof(dataObjectCacheLocal)); + } + + // Перенос значений свойств объекта (в том числе могут быть мастера). Если мастера означены, то перенос свойств мастера производится далее. + List localObjectLoadedProps = loadedObjectLocal.GetLoadedPropertiesList(); + List currentObjectLoadedProps = currentObject.GetLoadedPropertiesList(); + List notLoadedForActual = localObjectLoadedProps.Except(currentObjectLoadedProps).ToList(); + DataObject currentDataCopy = currentObject.GetDataCopy(); + foreach (string notLoadedPropName in notLoadedForActual) + { + object propValue = Information.GetPropValueByName(loadedObjectLocal, notLoadedPropName); + Information.SetPropValueByName(currentObject, notLoadedPropName, propValue); + currentObject.AddLoadedProperties(notLoadedPropName); + Information.SetPropValueByName(currentDataCopy, notLoadedPropName, propValue); + } + + // Ещё могут быть частично загруженные мастера. + ProperCacheUpdateForOneObject(dataObjectCache, dataObjectCacheLocal, loadedObjectLocal, true); + } + + /// + /// Обновление кэша по свежезагруженному объекту. + /// + /// Текущий основной кэш объектов. + /// Вспомогательный кэш, куда загружался объект. + /// Свежезагруженный объект, по которому обновляется основной кэш. + /// Флаг, определяющий, что в кэш уже добавлен свежезагруженный объект. + private static void ProperCacheUpdateForOneObject(DataObjectCache dataObjectCacheActual, DataObjectCache dataObjectCacheWithMasters, DataObject loadedDataObject, bool loadedObjectsAdded) + { + if (dataObjectCacheActual == null) + { + throw new ArgumentNullException(nameof(dataObjectCacheActual)); + } + + if (dataObjectCacheWithMasters == null) + { + throw new ArgumentNullException(nameof(dataObjectCacheWithMasters)); + } + + if (loadedDataObject == null) + { + return; + } + + if (!loadedObjectsAdded) + { + dataObjectCacheActual.AddDataObject(loadedDataObject); + } + + Type dobjType = typeof(DataObject); + Type currentType = loadedDataObject.GetType(); + List loadedProperties = loadedDataObject.GetLoadedPropertiesList(); + foreach (string currentPropertyName in loadedProperties) + { + Type currentPropertyType = Information.GetPropertyType(currentType, currentPropertyName); + if (currentPropertyType.IsSubclassOf(dobjType)) // Выбираем у текущего объекта ссылки на мастеров. + { + DataObject currentMaster = (DataObject)Information.GetPropValueByName(loadedDataObject, currentPropertyName); + if (currentMaster != null) + { + // Типы currentPropertyType и currentMaster.GetType() могут различаться из-за наследования. + DataObject masterFromActualCache = dataObjectCacheActual.GetLivingDataObject(currentMaster.GetType(), currentMaster.__PrimaryKey); + + if (masterFromActualCache == null) + { + // Если мастера ранее не было в кэше, то просто его туда переносим. + dataObjectCacheActual.AddDataObject(currentMaster); + + // Но в добавленном мастере могут быть мастера 2 и далее уровней. + ProperCacheUpdateForOneObject(dataObjectCacheActual, dataObjectCacheWithMasters, currentMaster, true); + } + else + { // Если мастер был в кэше, то аккуратно нужно перенести только незагруженные ранее свойства. + if (masterFromActualCache.GetStatus(false) == ObjectStatus.UnAltered && masterFromActualCache.GetLoadingState() != LoadingState.Loaded) + { + ProperUpdateOfObject(masterFromActualCache, currentMaster, dataObjectCacheActual, dataObjectCacheWithMasters); + } + } + } + } + } + } + } } diff --git a/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs b/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs index a8a3caeb..463e6ab1 100644 --- a/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs +++ b/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs @@ -491,6 +491,21 @@ public View GetDataObjectDefaultView(Type dataObjectType) } return _metadata[dataObjectType].DefaultView.Clone(); + } + + /// + /// Осуществляет получение представления для обновления объекта, соответствующего заданному типу объекта данных. + /// + /// Тип объекта данных, для которого требуется получить представление для обновления. + /// Представление для обновления объекта, соответствующее заданному типу объекта данных. + public View GetDataObjectUpdateView(Type dataObjectType) + { + if (dataObjectType == null) + { + throw new ArgumentNullException(nameof(dataObjectType), "Contract assertion not met: dataObjectType != null"); + } + + return _metadata[dataObjectType].UpdateView?.Clone(); } /// @@ -514,7 +529,7 @@ public List GetTypes(List strTypes) /// /// Осуществляет получение типа объекта данных, соответствующего заданному имени набора сущностей в EDM-модели. /// - /// Имя набора сущностей в EDM-модели, для которого требуется получить представление по умолчанию. + /// Имя набора сущностей в EDM-модели, для которого требуется получить тип. /// Типа объекта данных, соответствующий заданному имени набора сущностей в EDM-модели. public Type GetDataObjectType(string edmEntitySetName) { @@ -534,6 +549,22 @@ public Type GetDataObjectType(string edmEntitySetName) return dataObjectType; } + /// + /// Осуществляет получение типа объекта данных, соответствующего заданной сущности в EDM-модели. + /// + /// Сущность в EDM-модели, для которой требуется получить тип. + /// Типа объекта данных, соответствующий заданной сущности в EDM-модели. + public Type GetDataObjectType(EdmEntityObject edmEntity) + { + if (edmEntity == null) + { + throw new ArgumentNullException(nameof(edmEntity)); + } + + IEdmEntityType entityType = (IEdmEntityType)edmEntity.ActualEdmType; + return GetDataObjectType(GetEdmEntitySet(entityType).Name); + } + /// /// Получает список зарегистрированных в модели типов, которые являются дочерними к данному родительскому типу. /// В список добавляется также сам родительский тип. diff --git a/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmTypeSettings.cs b/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmTypeSettings.cs index bcfcc3ef..4e4219a1 100644 --- a/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmTypeSettings.cs +++ b/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmTypeSettings.cs @@ -31,6 +31,11 @@ public sealed class DataObjectEdmTypeSettings /// public View DefaultView { get; set; } + /// + /// View to be used instead of DefaultView on updates (Patch/Batch). + /// + public View UpdateView { get; set; } + /// /// The list of exposed details. /// diff --git a/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs b/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs index c2530455..4aeb2209 100644 --- a/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs +++ b/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs @@ -75,6 +75,11 @@ public class DefaultDataObjectEdmModelBuilder : IDataObjectEdmModelBuilder /// public Func EntityPropertyNameBuilder { get; set; } + /// + /// Dictionary of views to be used to load objects on updates. Used to restrict properties for performance (all props are loaded if view is not specified). + /// + private Dictionary UpdateViews { get; set; } + private readonly PropertyInfo _keyProperty = Information.ExtractPropertyInfo(n => n.__PrimaryKey); /// @@ -90,7 +95,8 @@ public DefaultDataObjectEdmModelBuilder( IServiceProvider serviceProvider, bool useNamespaceInEntitySetName = true, PseudoDetailDefinitions pseudoDetailDefinitions = null, - Dictionary additionalMapping = null) + Dictionary additionalMapping = null, + IEnumerable> updateViews = null) { _searchAssemblies = searchAssemblies ?? throw new ArgumentNullException(nameof(searchAssemblies), "Contract assertion not met: searchAssemblies != null"); _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); @@ -103,6 +109,11 @@ public DefaultDataObjectEdmModelBuilder( EntityPropertyNameBuilder = BuildEntityPropertyName; EntityTypeNameBuilder = BuildEntityTypeName; EntityTypeNamespaceBuilder = BuildEntityTypeNamespace; + + if (updateViews != null) + { + SetUpdateView(updateViews); + } } /// @@ -185,6 +196,54 @@ public IPseudoDetailDefinition GetPseudoDetailDefinition(object pseudoDetail) .FirstOrDefault(); } + /// + /// Change default views that would be used to load objects on updates. + /// + /// Should be called before MapDataObjectRoute. + /// Key - DataObject type, value - view to be used for objects of that type on updates. + private void SetUpdateView(IEnumerable> updateViews) + { + if (this.UpdateViews is null) + { + this.UpdateViews = new Dictionary(); + } + + if (updateViews != null) + { + foreach (KeyValuePair kvp in updateViews) + { + SetUpdateView(kvp.Key, kvp.Value); + } + } + } + + /// + /// Change for a specific . Update view would be used to load these objects on updates. + /// + /// Should be called before MapDataObjectRoute. + /// DataObject type for which update view would be set. + /// Update view to be used for objects of type . Setting removes update view for the type. + private void SetUpdateView(Type dataObjectType, View updateView) + { + if (!dataObjectType.IsSubclassOf(typeof(DataObject))) + { + throw new ArgumentException("Update view can be set only for a DataObject.", nameof(dataObjectType)); + } + + if (updateView is null) + { + UpdateViews.Remove(dataObjectType); + return; + } + + if (!Information.CheckViewForClasses(updateView.Name, dataObjectType)) + { + throw new ArgumentException($"View from DataObject {updateView.DefineClassType} can not be set for a DataObject of type {dataObjectType}.", nameof(updateView)); + } + + UpdateViews[dataObjectType] = updateView; + } + /// /// Adds the property for exposing. /// @@ -250,12 +309,21 @@ private void AddDataObjectWithHierarchy(DataObjectEdmMetadata meta, Type dataObj AddDataObjectWithHierarchy(meta, baseType); + // Extract user-defined update view: + View updateView = null; + if (UpdateViews != null) + { + UpdateViews.TryGetValue(dataObjectType, out updateView); + } + var typeSettings = meta[dataObjectType] = new DataObjectEdmTypeSettings { EnableCollection = true, CollectionName = EntitySetNameBuilder(dataObjectType), - DefaultView = DynamicView.Create(dataObjectType, null).View + DefaultView = DynamicView.Create(dataObjectType, null).View, + UpdateView = updateView, }; + AddProperties(dataObjectType, typeSettings); if (typeSettings.KeyType != null) meta[baseType].KeyType = null; diff --git a/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj b/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj index 35ffb546..e2c3ee06 100644 --- a/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj +++ b/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj @@ -26,7 +26,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj b/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj index dcf9fa93..88fe63c5 100644 --- a/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj +++ b/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj @@ -26,7 +26,7 @@ - + diff --git a/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj b/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj index 868eca8d..e6a22eda 100644 --- a/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj +++ b/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj @@ -14,10 +14,10 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseIntegratedTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseIntegratedTest.cs index 0f6caf4f..2cd05e1c 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseIntegratedTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseIntegratedTest.cs @@ -35,9 +35,11 @@ public abstract class BaseIntegratedTest : IDisposable /// /// Base class for integration tests. /// - public abstract class BaseIntegratedTest : IClassFixture>, IDisposable + /// Startup class used for booting the application. + public abstract class BaseIntegratedTest : IClassFixture>, IDisposable + where TStartup : class { - protected readonly WebApplicationFactory _factory; + protected readonly WebApplicationFactory _factory; #endif protected IUnityContainer _container; @@ -154,7 +156,7 @@ protected BaseIntegratedTest(string tempDbNamePrefix, bool useGisDataService = f /// Unit tests debug output. /// Prefix for temp database name. /// Use DataService with Gis support. - protected BaseIntegratedTest(CustomWebApplicationFactory factory, ITestOutputHelper output, string tempDbNamePrefix, bool useGisDataService = false) + protected BaseIntegratedTest(CustomWebApplicationFactory factory, ITestOutputHelper output, string tempDbNamePrefix, bool useGisDataService = false) { _factory = factory; #endif diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseODataServiceIntegratedTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseODataServiceIntegratedTest.cs index 2d0cf52d..af0f1652 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseODataServiceIntegratedTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/BaseODataServiceIntegratedTest.cs @@ -29,7 +29,13 @@ /// /// Базовый класс для тестирования работы с данными через ODataService. /// +#if NETFRAMEWORK public class BaseODataServiceIntegratedTest : BaseIntegratedTest +#endif +#if NETCOREAPP + public class BaseODataServiceIntegratedTest : BaseIntegratedTest + where TStartup : class +#endif { public class TestArgs { @@ -74,7 +80,7 @@ public BaseODataServiceIntegratedTest( /// Flag indicating whether type namespaces should be added to the names of their corresponding entity sets. /// Flag indicating whether GisDataService be used. /// OData definition of the link from master to pseudodetail (pseudoproperty). - public BaseODataServiceIntegratedTest(CustomWebApplicationFactory factory, ITestOutputHelper output = null, bool useNamespaceInEntitySetName = false, bool useGisDataService = false, PseudoDetailDefinitions pseudoDetailDefinitions = null) + public BaseODataServiceIntegratedTest(CustomWebApplicationFactory factory, ITestOutputHelper output = null, bool useNamespaceInEntitySetName = false, bool useGisDataService = false, PseudoDetailDefinitions pseudoDetailDefinitions = null) : base(factory, output, "ODataDB", useGisDataService) { Init(useNamespaceInEntitySetName, pseudoDetailDefinitions); diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/BatchTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/BatchTest.cs new file mode 100644 index 00000000..8dc8960e --- /dev/null +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/BatchTest.cs @@ -0,0 +1,260 @@ +namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD.Update +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Net; + using System.Net.Http; + + using ICSSoft.STORMNET; + using ICSSoft.STORMNET.Business.LINQProvider; + using ICSSoft.STORMNET.KeyGen; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Helpers; + using Xunit; + using View = ICSSoft.STORMNET.View; + + /// + /// The class of tests for CRUD operations at Batch form. + /// There are extra batch tests at . + /// +#if NETFRAMEWORK + public class BatchTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class BatchTest : BaseODataServiceIntegratedTest +#endif + { +#if NETCOREAPP + /// + /// Default constructor. + /// + /// Factory for application. + /// Output for debug information. + public BatchTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + : base(factory, output) + { + } +#endif + + /// + /// Test batch update of master-class with class at the same time. + /// It checks that dataobject cache is not crashed. + /// There are a master and object with link to master at batch request. Master is the first at the batch request. The link between object and master is not changed. + /// It is necessary that during batch processing master stay the same and is not overwriten. + /// + [Fact] + public void UpdateMasterAndClassTest() + { + ActODataService(args => + { + // Arrange. + string[] porodaPropertiesNames = + { + Information.ExtractPropertyPath<Порода>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Порода>(x => x.Название), + }; + string[] koshkaPropertiesNames = + { + Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Кошка>(x => x.Кличка), + }; + View porodaDynamicView = new View(new ViewAttribute("porodaDynamicView", porodaPropertiesNames), typeof(Порода)); + View koshkaDynamicView = new View(new ViewAttribute("koshkaDynamicView", koshkaPropertiesNames), typeof(Кошка)); + + const string InitialName = "Initial"; + const string OtherName = "Other"; + Порода poroda = new Порода() { Название = InitialName }; + Кошка koshka = new Кошка() { Кличка = InitialName, Порода = poroda}; + args.DataService.UpdateObject(koshka); + + Порода poroda1 = args.DataService.Query<Порода>(porodaDynamicView).FirstOrDefault(x => x.__PrimaryKey == poroda.__PrimaryKey); + Кошка koshka1 = args.DataService.Query<Кошка>(koshkaDynamicView).FirstOrDefault(x => x.__PrimaryKey == koshka.__PrimaryKey); + Assert.NotNull(poroda1); + Assert.NotNull(koshka1); + + poroda.Название = OtherName; + koshka.Кличка = OtherName; + + string requestJsonDatakoshka = koshka.ToJson(koshkaDynamicView, args.Token.Model); + DataObjectDictionary objJsonKoshka = DataObjectDictionary.Parse(requestJsonDatakoshka, koshkaDynamicView, args.Token.Model); + + objJsonKoshka.Add( + $"{nameof(Кошка.Порода)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Порода)).Name, + ((KeyGuid)poroda.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDatakoshka = objJsonKoshka.Serialize(); + + const string baseUrl = "http://localhost/odata"; + string[] changesets = new[] // Важно, чтобы сначала шёл мастер, потом объект, имеющий на него ссылку. + { + + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Порода)).Name}", + poroda.ToJson(porodaDynamicView, args.Token.Model), + poroda), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name}", + requestJsonDatakoshka, + koshka), + }; + + // Act. + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + // Assert. + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); + Порода poroda2 = args.DataService.Query<Порода>(porodaDynamicView).FirstOrDefault(x => x.__PrimaryKey == poroda.__PrimaryKey); + Кошка koshka2 = args.DataService.Query<Кошка>(koshkaDynamicView).FirstOrDefault(x => x.__PrimaryKey == koshka.__PrimaryKey); + Assert.NotNull(poroda2); + Assert.NotNull(koshka2); + Assert.Equal(OtherName, poroda2.Название); + Assert.Equal(OtherName, koshka2.Кличка); + } + }); + } + + /// + /// Test batch update with inheritance. + /// It checks that dataobject cache is not crashed. + /// There are classes A, its detail B, that has descendant C. During class A loading its details are loaded too, but details are loaded by View of class B, while details are of class C. + /// Thus there are objects of type C at the cache while they are loaded by properties of class B only. That's why the state of details is LightLoaded. + /// It is necessary to post-load only propertues that are not loaded before (loaded properties can be changed). + /// + [Fact] + public void UpdateWithInheritanceAndDetailsTest() + { + ActODataService(args => + { + // Arrange. + const string InitialName = "Initial"; + const string OtherName = "Other"; + TestConfiguration testConfiguration = new TestConfiguration() { Name = InitialName }; + FirstLevel first = new FirstLevel() { Name = InitialName, TestConfiguration = testConfiguration }; + TestClass second1 = new TestClass { Name = InitialName, FirstLevel = first }; + TestAssociation second2 = new TestAssociation { Name = InitialName, FirstLevel = first, SecondLevel1 = second1 }; + ThirdLevel third = new ThirdLevel { Name = InitialName, TestClass = second1 }; + DataObject[] updateObjects = new DataObject[] { testConfiguration, first, second1, second2, third }; + args.DataService.UpdateObjects(ref updateObjects); + + second2.Name = OtherName; // Изменение значения детейла одного типа, который имеет мастеровую ссылку на детейл второго типа (второй тип имеет детейл собственный). + ThirdLevel third2 = new ThirdLevel { Name = OtherName, TestClass = second1 }; // Добавление детейлов в детейл второго типа. + + string[] firstPropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.Name), + }; + View firstLevelDynamicView = new View(new ViewAttribute("firstLevelDynamicView", firstPropertiesNames), typeof(FirstLevel)); + + string[] second1PropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.Name), + }; + View second1DynamicView = new View(new ViewAttribute("second1DynamicView", second1PropertiesNames), typeof(TestClass)); + + string[] second2PropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.Name), + }; + View second2DynamicView = new View(new ViewAttribute("second2DynamicView", second2PropertiesNames), typeof(TestAssociation)); + + string[] thirdPropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.Name), + }; + View thirdLevelDynamicView = new View(new ViewAttribute("thirdDynamicView", thirdPropertiesNames), typeof(ThirdLevel)); + + // Операция изменения детейла второго типа (он попадает в батч-запрос как агрегатор к добавляемому детейлу второго уровня). + string requestJsonDataSecond1 = second1.ToJson(second1DynamicView, args.Token.Model); + DataObjectDictionary objJsonSecond1 = DataObjectDictionary.Parse(requestJsonDataSecond1, second1DynamicView, args.Token.Model); + objJsonSecond1.Add( // Добавляется ссылка на агрегатор. + $"{nameof(TestClass.FirstLevel)}@odata.bind", + string.Format("{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(FirstLevel)).Name, ((KeyGuid)first.__PrimaryKey).Guid.ToString("D"))); + requestJsonDataSecond1 = objJsonSecond1.Serialize(); + + // Операция вставки детейла второго уровня. + string requestJsonDataThird2 = third2.ToJson(thirdLevelDynamicView, args.Token.Model); + DataObjectDictionary objJsonThird2 = DataObjectDictionary.Parse(requestJsonDataThird2, thirdLevelDynamicView, args.Token.Model); + objJsonThird2.Add( // Добавляется ссылка на агрегатор. + $"{nameof(ThirdLevel.TestClass)}@odata.bind", + string.Format("{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(TestClass)).Name, ((KeyGuid)second1.__PrimaryKey).Guid.ToString("D"))); + requestJsonDataThird2 = objJsonThird2.Serialize(); + + // Операция изменения детейла первого типа. + string requestJsonDataSecond2 = second2.ToJson(second2DynamicView, args.Token.Model); + DataObjectDictionary objJsonSecond2 = DataObjectDictionary.Parse(requestJsonDataSecond2, second2DynamicView, args.Token.Model); + objJsonSecond2.Add( // Добавляется ссылка на агрегатор. + $"{nameof(TestAssociation.FirstLevel)}@odata.bind", + string.Format("{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(FirstLevel)).Name, ((KeyGuid)first.__PrimaryKey).Guid.ToString("D"))); + objJsonSecond2.Add( // Добавляется ссылка мастеровая на другой детейл. + $"{nameof(TestAssociation.SecondLevel1)}@odata.bind", + string.Format("{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(TestClass)).Name, ((KeyGuid)second1.__PrimaryKey).Guid.ToString("D"))); + requestJsonDataSecond2 = objJsonSecond2.Serialize(); + + const string baseUrl = "http://localhost/odata"; + string[] changesets = new[] + { + + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(TestClass)).Name}", + requestJsonDataSecond1, + second1), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(ThirdLevel)).Name}", + requestJsonDataThird2, + third2), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(TestAssociation)).Name}", + requestJsonDataSecond2, + second2), + }; + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + + // Код для удобства отлавливания исключений. + args.Token.Events.CallbackAfterInternalServerError = (Exception exception, ref HttpStatusCode code) => + { + Exception currentException = exception; + + while (currentException != null) + { + currentException = currentException.InnerException; + } + + return exception; + }; + + // Act. + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + // Assert. + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.Created, HttpStatusCode.OK }); + + string[] thirdPropertiesNames2 = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.Name), + Information.ExtractPropertyPath(x => x.TestClass), + }; + View thirdLevelDynamicView2 = new View(new ViewAttribute("thirdDynamicView2", thirdPropertiesNames2), typeof(ThirdLevel)); + List thirdLevelList = args.DataService.Query(thirdLevelDynamicView2).Where(x => x.TestClass.__PrimaryKey == second1.__PrimaryKey).ToList(); + Assert.NotNull(thirdLevelList); + Assert.True(thirdLevelList.Any()); + Assert.Equal(2, thirdLevelList.Count); + + TestAssociation checkAssociation = args.DataService.Query(second2DynamicView).FirstOrDefault(x => x.__PrimaryKey == second2.__PrimaryKey); + Assert.NotNull(checkAssociation); + Assert.Equal(OtherName, checkAssociation.Name); + } + }); + } + } +} + diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/BusinessServersTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/BusinessServersTest.cs index 6f1bfb16..27b8c4c4 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/BusinessServersTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/BusinessServersTest.cs @@ -13,7 +13,12 @@ /// /// Класс тестов для тестирования бизнес-серверов. /// +#if NETFRAMEWORK public class BusinessServersTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class BusinessServersTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -21,7 +26,7 @@ public class BusinessServersTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public BusinessServersTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public BusinessServersTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/ChangeMasterInBSTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/ChangeMasterInBSTest.cs index a340a454..ccae2f74 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/ChangeMasterInBSTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/ChangeMasterInBSTest.cs @@ -11,7 +11,12 @@ /// /// Класс тестов для тестирования изменения мастера при создании детейла. /// +#if NETFRAMEWORK public class ChangeMasterInBSTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class ChangeMasterInBSTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -19,7 +24,7 @@ public class ChangeMasterInBSTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public ChangeMasterInBSTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public ChangeMasterInBSTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/CreateWithPseudoDetailDefinedTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/CreateWithPseudoDetailDefinedTest.cs index 0babf64c..d5a431d1 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/CreateWithPseudoDetailDefinedTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Create/CreateWithPseudoDetailDefinedTest.cs @@ -11,7 +11,12 @@ /// /// Unit-test class for creation entity instance with pseudodetail field defined through OData service. /// +#if NETFRAMEWORK public class CreateWithPseudoDetailDefinedTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class CreateWithPseudoDetailDefinedTest : BaseODataServiceIntegratedTest +#endif { private static PseudoDetailDefinitions GetPseudoDetailDefinitions() { @@ -36,8 +41,7 @@ public CreateWithPseudoDetailDefinedTest() : base(pseudoDetailDefinitions: GetPs /// /// Factory for application. /// Debug information output. - public CreateWithPseudoDetailDefinedTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) - : base(factory, output, pseudoDetailDefinitions: GetPseudoDetailDefinitions()) + public CreateWithPseudoDetailDefinedTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output, pseudoDetailDefinitions: GetPseudoDetailDefinitions()) { } #endif diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/GisCRUDTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/GisCRUDTest.cs index c3e7bbf0..32aeb557 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/GisCRUDTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/GisCRUDTest.cs @@ -21,7 +21,12 @@ /// /// Класс тестов для тестирования работы с гео-данными. /// +#if NETFRAMEWORK public class GisCRUDTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class GisCRUDTest : BaseODataServiceIntegratedTest +#endif { #if NETFRAMEWORK /// @@ -37,7 +42,7 @@ public GisCRUDTest() /// /// Фабрика для приложения. /// Вывод диагностической информации по тестам. - public GisCRUDTest(CustomWebApplicationFactory factory, ITestOutputHelper output) + public GisCRUDTest(CustomWebApplicationFactory factory, ITestOutputHelper output) : base(factory, output, false, true) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/MultiThreadTests.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/MultiThreadTests.cs index 70c96ad1..7d7b0426 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/MultiThreadTests.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/MultiThreadTests.cs @@ -35,7 +35,12 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD /// /// Тесты CRUD операций с множеством пользователей. /// +#if NETFRAMEWORK public class MultiThreadTests : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class MultiThreadTests : BaseODataServiceIntegratedTest +#endif { private const int ThreadCount = 50; @@ -56,7 +61,7 @@ public MultiThreadTests(Xunit.Abstractions.ITestOutputHelper output) /// /// Фабрика для приложения. /// Вывод отладочной информации. - public MultiThreadTests(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public MultiThreadTests(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/BuiltinQueryFunctionsTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/BuiltinQueryFunctionsTest.cs index 350dda1a..6cb1acf3 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/BuiltinQueryFunctionsTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/BuiltinQueryFunctionsTest.cs @@ -20,7 +20,12 @@ /// /// Класс тестов для тестирования применения $filter в OData-сервисе. /// +#if NETFRAMEWORK public class BuiltinQueryFunctionsTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class BuiltinQueryFunctionsTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -28,7 +33,7 @@ public class BuiltinQueryFunctionsTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public BuiltinQueryFunctionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public BuiltinQueryFunctionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/Excel/ExcelExportTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/Excel/ExcelExportTest.cs index 9eabb8aa..1ab78bf1 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/Excel/ExcelExportTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/Excel/ExcelExportTest.cs @@ -13,7 +13,12 @@ /// /// A class for testing exports from Excel. /// +#if NETFRAMEWORK public class ExcelExportTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class ExcelExportTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -21,7 +26,7 @@ public class ExcelExportTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public ExcelExportTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public ExcelExportTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterDetailFieldTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterDetailFieldTest.cs index eab57c08..b3d19e65 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterDetailFieldTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterDetailFieldTest.cs @@ -16,7 +16,12 @@ /// /// Unit-test class for filtering data through OData service by master details fields. /// +#if NETFRAMEWORK public class FilterByMasterDetailFieldTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class FilterByMasterDetailFieldTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -24,7 +29,7 @@ public class FilterByMasterDetailFieldTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public FilterByMasterDetailFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FilterByMasterDetailFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } @@ -142,41 +147,40 @@ public void TestFilterByDetailMaster() Медведь медведь3 = new Медведь() { ПорядковыйНомер = 3 }; Лес лес1 = new Лес() { Название = "Шишкин" }; - Лес лес2 = new Лес() { Название = "Ёжкин" }; + Лес лес2 = new Лес() { Название = "Ёжкин" }; Лес лес3 = new Лес() { Название = "Пыжкин" }; Берлога берлога1 = new Берлога() { Наименование = "Берлога 1", ЛесРасположения = лес1, Заброшена = true }; Берлога берлога2 = new Берлога() { Наименование = "Берлога 2", ЛесРасположения = лес1, Заброшена = false }; Берлога берлога3 = new Берлога() { Наименование = "Берлога 3", ЛесРасположения = лес2, Заброшена = false }; - Берлога берлога4 = new Берлога() { Наименование = "Берлога 4", ЛесРасположения = лес2, Заброшена = false }; + Берлога берлога4 = new Берлога() { Наименование = "Берлога 4", ЛесРасположения = лес2, Заброшена = false }; Берлога берлога5 = new Берлога() { Наименование = "Берлога 5", ЛесРасположения = лес3, Заброшена = false }; Берлога берлога6 = new Берлога() { Наименование = "Берлога 6", ЛесРасположения = лес3, Заброшена = true}; медведь1.Берлога.AddRange(берлога1, берлога2); - медведь2.Берлога.AddRange(берлога3, берлога4); + медведь2.Берлога.AddRange(берлога3, берлога4); медведь3.Берлога.AddRange(берлога5, берлога6); DataObject[] newDataObjects = new DataObject[] { лес1, лес2, лес3, медведь1, медведь2, берлога1, берлога2, берлога3, берлога4, берлога5, берлога6 }; + args.DataService.UpdateObjects(ref newDataObjects); - args.DataService.UpdateObjects(ref newDataObjects); - - // Act. + // Act. string requestUrl = string.Format( "http://localhost/odata/{0}?$filter={1}", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name, "(Медведь/Берлога/any(f:(f/Заброшена eq true)))"); using (var response = args.HttpClient.GetAsync(requestUrl).Result) - { - // Assert. + { + // Assert. string receivedStr = response.Content.ReadAsStringAsync().Result.Beautify(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Dictionary receivedDict = JsonConvert.DeserializeObject>(receivedStr); Assert.Equal(4, ((JArray)receivedDict["value"]).Count); } }); - } - + } + /// /// Tests filtering data by detail enum field with complex predicate. /// @@ -184,38 +188,37 @@ public void TestFilterByDetailMaster() public void TestFilterByEnumDetailMaster() { ActODataService(args => - { - // Arrange. - Driver driver1 = new Driver { CarCount = 2, Documents = true, Name = "Driver1" }; - Driver driver2 = new Driver { CarCount = 2, Documents = true, Name = "Driver2" }; - Driver driver3 = new Driver { CarCount = 2, Documents = true, Name = "Driver3" }; + { + // Arrange. + Driver driver1 = new Driver { CarCount = 2, Documents = true, Name = "Driver1" }; + Driver driver2 = new Driver { CarCount = 2, Documents = true, Name = "Driver2" }; + Driver driver3 = new Driver { CarCount = 2, Documents = true, Name = "Driver3" }; Car car1d1 = new Car { Model = "ВАЗ", TipCar = tTip.sedan }; Car car2d1 = new Car { Model = "ГАЗ", TipCar = tTip.sedan }; Car car1d2 = new Car { Model = "BMW", TipCar = tTip.crossover }; Car car2d2 = new Car { Model = "Porsche", TipCar = tTip.sedan }; - + Car car1d3 = new Car { Model = "Lamborghini", TipCar = tTip.crossover }; - Car car2d3 = new Car { Model = "Subaru", TipCar = tTip.sedan }; - + Car car2d3 = new Car { Model = "Subaru", TipCar = tTip.sedan }; + driver1.Car.AddRange(car1d1, car2d1); - driver2.Car.AddRange(car1d2, car2d2); + driver2.Car.AddRange(car1d2, car2d2); driver3.Car.AddRange(car1d3, car2d3); DataObject[] newDataObjects = new DataObject[] { driver1, driver2, driver3, car1d1, car2d1, car1d2, car2d2, car1d3, car2d3 }; + args.DataService.UpdateObjects(ref newDataObjects); - args.DataService.UpdateObjects(ref newDataObjects); - - // Act. + // Act. string requestUrl = string.Format( "http://localhost/odata/{0}?$filter={1}", args.Token.Model.GetEdmEntitySet(typeof(Car)).Name, "(Driver/Car/any(f:(f/TipCar eq NewPlatform.Flexberry.ORM.ODataService.Tests.tTip'crossover')))"); using (var response = args.HttpClient.GetAsync(requestUrl).Result) - { - // Assert. + { + // Assert. string receivedStr = response.Content.ReadAsStringAsync().Result.Beautify(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Dictionary receivedDict = JsonConvert.DeserializeObject>(receivedStr); diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterFieldTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterFieldTest.cs index 283adb51..d6ae5e9b 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterFieldTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterFieldTest.cs @@ -15,15 +15,20 @@ /// /// Unit-test class for filtering data through OData service by master fields. /// +#if NETFRAMEWORK public class FilterByMasterFieldTest : BaseODataServiceIntegratedTest - { +#endif +#if NETCOREAPP + public class FilterByMasterFieldTest : BaseODataServiceIntegratedTest +#endif + { #if NETCOREAPP /// /// Конструктор по-умолчанию. /// /// Фабрика для приложения. /// Вывод отладочной информации. - public FilterByMasterFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FilterByMasterFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterMasterDetailFieldTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterMasterDetailFieldTest.cs index c7421e20..e94e198c 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterMasterDetailFieldTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByMasterMasterDetailFieldTest.cs @@ -16,7 +16,12 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD.Read /// /// Unit-test class for filtering data through OData service by master master details fields. /// +#if NETFRAMEWORK public class FilterByMasterMasterDetailFieldTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class FilterByMasterMasterDetailFieldTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -24,7 +29,7 @@ public class FilterByMasterMasterDetailFieldTest : BaseODataServiceIntegratedTes /// /// Фабрика для приложения. /// Вывод отладочной информации. - public FilterByMasterMasterDetailFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FilterByMasterMasterDetailFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByPseudoDetailFieldTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByPseudoDetailFieldTest.cs index f1dd44e1..67cc3098 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByPseudoDetailFieldTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterByPseudoDetailFieldTest.cs @@ -16,7 +16,12 @@ /// /// Unit-test class for filtering data through OData service by pseudodetail field. /// +#if NETFRAMEWORK public class FilterByPseudoDetailFieldTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class FilterByPseudoDetailFieldTest : BaseODataServiceIntegratedTest +#endif { private static PseudoDetailDefinitions GetPseudoDetailDefinitions() { @@ -41,7 +46,7 @@ public FilterByPseudoDetailFieldTest() : base(pseudoDetailDefinitions: GetPseudo /// /// Factory for application. /// Debug information output. - public FilterByPseudoDetailFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FilterByPseudoDetailFieldTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output, pseudoDetailDefinitions: GetPseudoDetailDefinitions()) { _container.RegisterInstance(GetPseudoDetailDefinitions()); diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterTest.cs index 8bff97a0..aa629031 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/FilterTest.cs @@ -19,7 +19,12 @@ /// /// Класс тестов для тестирования применения $filter в OData-сервисе. /// +#if NETFRAMEWORK public class FilterTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class FilterTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -27,7 +32,7 @@ public class FilterTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public FilterTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FilterTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs index 019014ad..8b69831f 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs @@ -19,7 +19,12 @@ /// /// Класс тестов для проверки корректной обработки Get-запросов. /// +#if NETFRAMEWORK public class GetTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class GetTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -27,15 +32,15 @@ public class GetTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public GetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public GetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } #endif - /// - /// Проверка получения данных для классов, в которых есть нехранимые поля, который не содержат setter'ов. - /// (Такие варианты присутствуют в старом коде). + /// + /// Проверка получения данных для классов, в которых есть нехранимые поля, который не содержат setter'ов. + /// (Такие варианты присутствуют в старом коде). /// [Fact] public void TestGetNotStored() @@ -67,8 +72,8 @@ public void TestGetNotStored() }); } - /// - /// Проверка значение в атрибуте @odata.type. + /// + /// Проверка значение в атрибуте @odata.type. /// [Fact] public void TestGetWithMaster() diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs index e90fbf41..e3c9c00d 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs @@ -15,7 +15,12 @@ /// /// Класс тестов для тестирования метаданных, получаемых от OData-сервиса. /// +#if NETFRAMEWORK public class MetaDataTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class MetaDataTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -23,7 +28,7 @@ public class MetaDataTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public MetaDataTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public MetaDataTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/ReferenceToMasterTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/ReferenceToMasterTest.cs index ecbed583..14963a4f 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/ReferenceToMasterTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/ReferenceToMasterTest.cs @@ -18,7 +18,12 @@ /// /// Unit-test class for read data with reference to master through OData service. /// +#if NETFRAMEWORK public class ReferenceToMasterTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class ReferenceToMasterTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -26,7 +31,7 @@ public class ReferenceToMasterTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public ReferenceToMasterTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public ReferenceToMasterTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/SkipTopOrderByTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/SkipTopOrderByTest.cs index fafca5aa..0ead5fe5 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/SkipTopOrderByTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/SkipTopOrderByTest.cs @@ -20,7 +20,12 @@ /// /// Класс тестов для тестирования $skip, $top, $orderby. /// +#if NETFRAMEWORK public class SkipTopOrderByTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class SkipTopOrderByTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -28,7 +33,7 @@ public class SkipTopOrderByTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public SkipTopOrderByTest(CustomWebApplicationFactory factory, ITestOutputHelper output) + public SkipTopOrderByTest(CustomWebApplicationFactory factory, ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/UtfRequestsTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/UtfRequestsTest.cs index 931f1a75..adacb75c 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/UtfRequestsTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/UtfRequestsTest.cs @@ -18,15 +18,20 @@ /// /// Unit-test class for read data through OData service with using UTF8 requests. /// +#if NETFRAMEWORK public class UtfRequestsTest : BaseODataServiceIntegratedTest - { +#endif +#if NETCOREAPP + public class UtfRequestsTest : BaseODataServiceIntegratedTest +#endif + { #if NETCOREAPP /// /// Конструктор по-умолчанию. /// /// Фабрика для приложения. /// Вывод отладочной информации. - public UtfRequestsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public UtfRequestsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/BusinessServersTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/BusinessServersTest.cs index d4077833..4278b571 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/BusinessServersTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/BusinessServersTest.cs @@ -19,7 +19,12 @@ /// /// Класс тестов для тестирования бизнес-серверов. /// +#if NETFRAMEWORK public class BusinessServersTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class BusinessServersTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -27,7 +32,7 @@ public class BusinessServersTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public BusinessServersTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public BusinessServersTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/ModifyDataTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/ModifyDataTest.cs index ab44a57e..a13adcdb 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/ModifyDataTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/ModifyDataTest.cs @@ -1,1608 +1,1929 @@ -namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD.Update -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Net; - using System.Net.Http; - using ICSSoft.STORMNET; - using ICSSoft.STORMNET.Business; - using ICSSoft.STORMNET.Exceptions; - using ICSSoft.STORMNET.KeyGen; - using ICSSoft.STORMNET.Windows.Forms; - using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; - using NewPlatform.Flexberry.ORM.ODataService.Tests.Helpers; - - using Newtonsoft.Json; - using Xunit; - - /// - /// Класс тестов для тестирования операций модификации данных OData-сервисом (вставка, обновление, удаление). - /// - public class ModifyDataTest : BaseODataServiceIntegratedTest - { -#if NETCOREAPP - /// - /// Конструктор по-умолчанию. - /// - /// Фабрика для приложения. - /// Вывод отладочной информации. - public ModifyDataTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) - : base(factory, output) - { - } -#endif - - /// - /// Осуществляет проверку того, что при PATCH запросах происходит вставка и удаление связей объекта. - /// Зависимые объекты (мастера, детейлы) представлены в виде - Имя_Связи@odata.bind: Имя_Набора_Сущностей(ключ) или Имя_Связи@odata.bind: [ Имя_Набора_Сущностей(ключ) ] . - /// Тест проверяет следующие факты: - /// - /// Вставка связи мастерового объекта. - /// Удаление связи мастеровго объекта путём присвоения null свойству. - /// Удаление связи мастеровго объекта путём присвоения null для Имя_Связи@odata.bind. - /// - /// - [Fact] - public void PatchNavigationPropertiesTest() - { - ActODataService(args => - { - string[] берлогаPropertiesNames = - { - Information.ExtractPropertyPath<Берлога>(x => x.ПолеБС), - Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Берлога>(x => x.Наименование), - Information.ExtractPropertyPath<Берлога>(x => x.Заброшена) - }; - string[] лесPropertiesNames = - { - Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лес>(x => x.Площадь), - Information.ExtractPropertyPath<Лес>(x => x.Название), - Information.ExtractPropertyPath<Лес>(x => x.ДатаПоследнегоОсмотра) - }; - string[] медвPropertiesNames = - { - Information.ExtractPropertyPath<Медведь>(x => x.ПолеБС), - Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Медведь>(x => x.Вес), - - // Information.ExtractPropertyPath<Медведь>(x => x.Пол), - Information.ExtractPropertyPath<Медведь>(x => x.ДатаРождения), - Information.ExtractPropertyPath<Медведь>(x => x.ПорядковыйНомер) - }; - var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); - var лесDynamicView = new View(new ViewAttribute("лесDynamicView", лесPropertiesNames), typeof(Лес)); - var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); - - // Объекты для тестирования создания. - Медведь медв = new Медведь { Вес = 48 }; - Лес лес1 = new Лес { Название = "Бор" }; - Лес лес2 = new Лес { Название = "Березовая роща" }; - var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; - var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; - медв.Берлога.Add(берлога1); - var objs = new DataObject[] { медв, лес1, лес2, берлога1 }; - args.DataService.UpdateObjects(ref objs); - string requestUrl; - - string requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); - DataObjectDictionary objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); - - objJson.Add("ЛесОбитания@odata.bind", string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name, - ((KeyGuid)лес1.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataМедв = objJson.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) - { - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - } - - var requestJsonDataБерлога = берлога1.ToJson(берлогаDynamicView, args.Token.Model); - objJson = DataObjectDictionary.Parse(requestJsonDataБерлога, берлогаDynamicView, args.Token.Model); - objJson.Add("Медведь", null); - requestJsonDataБерлога = objJson.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataБерлога).Result) - { - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } - - requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); - objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); - objJson.Add("ЛесОбитания@odata.bind", null); - requestJsonDataМедв = objJson.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); - - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) - { - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - } - - requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); - objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); - objJson.Add("ЛесОбитания", null); - requestJsonDataМедв = objJson.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); - - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) - { - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - } - - requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); - objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); - objJson.Add("Берлога@odata.bind", null); - requestJsonDataМедв = objJson.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); - - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) - { - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } - }); - } - - /// - /// Осуществляет проверку того, что при POST запросах происходит вставка и удаление связей объекта. - /// Зависимые объекты (мастера, детейлы) представлены в виде - Имя_Связи@odata.bind: Имя_Набора_Сущностей(ключ) или Имя_Связи@odata.bind: [ Имя_Набора_Сущностей(ключ) ] . - /// Тест проверяет следующие факты: - /// - /// Вставка связи мастерового объекта. - /// Удаление связи мастеровго объекта путём присвоения null свойству. - /// Удаление связи мастеровго объекта путём присвоения null для Имя_Связи@odata.bind. - /// - /// - [Fact] - public void PostNavigationPropertiesTest() - { - string[] берлогаPropertiesNames = - { - // Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Берлога>(x => x.Наименование), - Information.ExtractPropertyPath<Берлога>(x => x.Заброшена) - }; - string[] лесPropertiesNames = - { - // Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лес>(x => x.Площадь), - Information.ExtractPropertyPath<Лес>(x => x.Название), - Information.ExtractPropertyPath<Лес>(x => x.ДатаПоследнегоОсмотра) - }; - string[] медвPropertiesNames = - { - // Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Медведь>(x => x.Вес), - - // Information.ExtractPropertyPath<Медведь>(x => x.Пол), - Information.ExtractPropertyPath<Медведь>(x => x.ДатаРождения), - Information.ExtractPropertyPath<Медведь>(x => x.ПорядковыйНомер) - }; - var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); - var лесDynamicView = new View(new ViewAttribute("лесDynamicView", лесPropertiesNames), typeof(Лес)); - var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); - - // Объекты для тестирования создания. - Медведь медв = new Медведь { Вес = 48 }; - Лес лес1 = new Лес { Название = "Бор" }; - var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; - ActODataService(args => - { - string requestUrl; - string receivedJsonЛес1, receivedJsonМедв; - string requestJsonDataЛес1 = лес1.ToJson(лесDynamicView, args.Token.Model); - requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name); - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonDataЛес1).Result) - { - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - - // Получим строку с ответом (в ней должна вернуться созданная сущность). - receivedJsonЛес1 = response.Content.ReadAsStringAsync().Result.Beautify(); - } - - string requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); - DataObjectDictionary objJsonМедв = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); - Dictionary receivedDict = JsonConvert.DeserializeObject>(receivedJsonЛес1); - - objJsonМедв.Add("ЛесОбитания@odata.bind", string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name, - receivedDict["__PrimaryKey"])); - objJsonМедв.Add("Берлога@odata.bind", null); - - requestJsonDataМедв = objJsonМедв.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name); - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) - { - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - - // Получим строку с ответом (в ней должна вернуться созданная сущность). - receivedJsonМедв = response.Content.ReadAsStringAsync().Result.Beautify(); - } - - var requestJsonDataБерлога = берлога1.ToJson(берлогаDynamicView, args.Token.Model); - var objJson = DataObjectDictionary.Parse(requestJsonDataБерлога, берлогаDynamicView, args.Token.Model); - receivedDict = JsonConvert.DeserializeObject>(receivedJsonМедв); - objJson.Add("Медведь@odata.bind", string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, - receivedDict["__PrimaryKey"])); - requestJsonDataБерлога = objJson.Serialize(); - requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name); - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonDataБерлога).Result) - { - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - } - }); - } - - /// - /// Осуществляет проверку того, что при POST запросах происходит вставка объекта, - /// зависимые объекты (мастера, детейлы) обрабатываются в зависимости от наличия в БД - вставляются или обновляются. - /// - [Fact] - public void PostComplexObjectTest() - { - ActODataService(args => - { - string[] берлогаPropertiesNames = - { - Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Берлога>(x => x.Наименование), - Information.ExtractPropertyPath<Берлога>(x => x.ЛесРасположения), - Information.ExtractPropertyPath<Берлога>(x => x.ЛесРасположения.Название), - }; - string[] медвPropertiesNames = - { - Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Медведь>(x => x.Вес), - Information.ExtractPropertyPath<Медведь>(x => x.ЛесОбитания), - Information.ExtractPropertyPath<Медведь>(x => x.ЛесОбитания.Название), - }; - var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); - var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); - медвDynamicView.AddDetailInView(Information.ExtractPropertyPath<Медведь>(x => x.Берлога), берлогаDynamicView, true); - - // Объекты для тестирования создания. - Медведь медв = new Медведь { Вес = 48 }; - Лес лес1 = new Лес { Название = "Бор" }; - Лес лес2 = new Лес { Название = "Березовая роща" }; - медв.ЛесОбитания = лес1; - var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; - var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; - медв.Берлога.Add(берлога1); - медв.Берлога.Add(берлога2); - - string json = медв.ToJson(медвDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису. - string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. - HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).Result; - - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - - // Получим строку с ответом. - string receivedJsonObjs = response.Content.ReadAsStringAsync().Result.Beautify(); - - // В ответе приходит объект с созданной сущностью. - // Преобразуем полученный объект в словарь. - Dictionary receivedObjs = JsonConvert.DeserializeObject>(receivedJsonObjs); - - // Проверяем созданный объект, вычитав с помощью DataService - DataObject createdObj = new Медведь { __PrimaryKey = медв.__PrimaryKey }; - args.DataService.LoadObject(createdObj); - - Assert.Equal(ObjectStatus.UnAltered, createdObj.GetStatus()); - Assert.Equal(((Медведь)createdObj).Вес, (int)(long)receivedObjs["Вес"]); - - // Проверяем что созданы все зависимые объекты, вычитав с помощью DataService - var ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; - LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE); - lcs.LoadingTypes = new[] { typeof(Лес) }; - DataObject[] dobjs = args.DataService.LoadObjects(lcs); - - Assert.Equal(2, dobjs.Length); - - lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), Берлога.Views.БерлогаE); - lcs.LoadingTypes = new[] { typeof(Берлога) }; - dobjs = args.DataService.LoadObjects(lcs); - Assert.Equal(2, dobjs.Length); - - // Создание объекта и обновление связанных - // Создаем нового медведя: в его мастере ЛесОбитания - лес1, но в нём изменим Название; в детейлы заберем от первого медведя детейл2, изменив Название в мастере детейла. - // Подготовка тестовых данных в формате OData. - Медведь медвежонок = new Медведь { Вес = 12 }; - var берлога3 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; - медвежонок.Берлога.Add(берлога3); - - медв.Берлога.Remove(берлога2); - медвежонок.Берлога.Add(берлога2); - - лес1.Название = лес1.Название + "(обновл)"; - лес2.Название = лес2.Название + "(обновл)"; - - json = медвежонок.ToJson(медвDynamicView, args.Token.Model); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. - response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).Result; - - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - - // Проверяем созданный объект, вычитав с помощью DataService - createdObj = new Медведь { __PrimaryKey = медвежонок.__PrimaryKey }; - args.DataService.LoadObject(createdObj); - - Assert.Equal(ObjectStatus.UnAltered, createdObj.GetStatus()); - Assert.Equal(12, ((Медведь)createdObj).Вес); - - // Проверяем что созданы все зависимые объекты, вычитав с помощью DataService - ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; - lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE); - lcs.LoadingTypes = new[] { typeof(Лес) }; - lcs.LimitFunction = ldef.GetFunction( - ldef.funcEQ, - new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.StormMainObjectKey), - лес1.__PrimaryKey); - dobjs = args.DataService.LoadObjects(lcs); - - Assert.Single(dobjs); - Assert.EndsWith("(обновл)", ((Лес)dobjs[0]).Название); - - lcs.LimitFunction = ldef.GetFunction( - ldef.funcEQ, - new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.StormMainObjectKey), - лес2.__PrimaryKey); - dobjs = args.DataService.LoadObjects(lcs); - - Assert.Single(dobjs); - Assert.EndsWith("(обновл)", ((Лес)dobjs[0]).Название); - - lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), Берлога.Views.БерлогаE); - lcs.LoadingTypes = new[] { typeof(Берлога) }; - lcs.LimitFunction = ldef.GetFunction( - ldef.funcEQ, - new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, "Медведь"), - медв.__PrimaryKey); - dobjs = args.DataService.LoadObjects(lcs); - - Assert.Single(dobjs); - - lcs.LimitFunction = ldef.GetFunction( - ldef.funcEQ, - new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, "Медведь"), - медвежонок.__PrimaryKey); - dobjs = args.DataService.LoadObjects(lcs); - - Assert.Equal(2, dobjs.Length); - }); - } - - /// - /// Осуществляет проверку создания сущности с датой и незаданным первичным ключом. - /// - [Fact] - public void PostObjDateTimeNoPKTest() - { - ActODataService(args => - { - // Создаем объект данных. - Лес country = new Лес { Площадь = 10, Название = "Бор", ДатаПоследнегоОсмотра = (ICSSoft.STORMNET.UserDataTypes.NullableDateTime)DateTime.Now }; - - // Преобразуем объект данных в JSON-строку. - string[] contryPropertiesNames = - { - Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лес>(x => x.Площадь), - Information.ExtractPropertyPath<Лес>(x => x.Название), - Information.ExtractPropertyPath<Лес>(x => x.ДатаПоследнегоОсмотра) - }; - var contryDynamicView = new View(new ViewAttribute("ContryDynamicView", contryPropertiesNames), typeof(Лес)); - - string requestJsonData = country.ToJson(contryDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису. - string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - } - }); - } - - /// - /// Осуществляет проверку того, что при POST запросах, отправляющих простейшие объекты JSON-строкой, происходит корректная вставка. - /// - [Fact] - public void PostDataTimeValueTest() - { - ActODataService(args => - { - // Создаем объект данных. - КлассСМножествомТипов класс = new КлассСМножествомТипов() { PropertyDateTime = DateTime.Now }; - - // Преобразуем объект данных в JSON-строку. - string[] classPropertiesNames = - { - Information.ExtractPropertyPath<КлассСМножествомТипов>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<КлассСМножествомТипов>(x => x.PropertyDateTime) - }; - - var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(КлассСМножествомТипов)); - - string requestJsonData = класс.ToJson(classDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису. - string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(КлассСМножествомТипов)).Name); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - } - }); - } - - /// - /// Осуществляет проверку того, что при POST запросах, отправляющих простейшие объекты JSON-строкой, происходит корректная вставка. - /// - [Fact] - public void PostSimpleObjectTest() - { - ActODataService(args => - { - // Создаем объект данных. - Страна country = new Страна { Название = "Russia" }; - - // Преобразуем объект данных в JSON-строку. - string[] contryPropertiesNames = - { - Information.ExtractPropertyPath<Страна>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Страна>(x => x.Название) - }; - var contryDynamicView = new View(new ViewAttribute("ContryDynamicView", contryPropertiesNames), typeof(Страна)); - - string requestJsonData = country.ToJson(contryDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису. - string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Страна)).Name); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - - // Получим строку с ответом (в ней должна вернуться созданная сущность). - string receivedJsonCountry = response.Content.ReadAsStringAsync().Result.Beautify(); - - // Преобразуем полученный объект в словарь (c приведением типов значений к типам свойств объекта данных). - DataObjectDictionary receivedDictionaryCountry = DataObjectDictionary.Parse(receivedJsonCountry, contryDynamicView, args.Token.Model); - - // Сравним значения полученного и исходного объектов. - Assert.True(receivedDictionaryCountry.HasProperty(Information.ExtractPropertyPath<Страна>(x => x.__PrimaryKey))); - Assert.Equal(country.__PrimaryKey, receivedDictionaryCountry.GetPropertyValue(Information.ExtractPropertyPath<Страна>(x => x.__PrimaryKey))); - - Assert.True(receivedDictionaryCountry.HasProperty(Information.ExtractPropertyPath<Страна>(x => x.Название))); - Assert.Equal(country.Название, receivedDictionaryCountry.GetPropertyValue(Information.ExtractPropertyPath<Страна>(x => x.Название))); - - // Проверяем что объект данных был корректно создан в базе. - Страна createdCountry = new Страна { __PrimaryKey = country.__PrimaryKey }; - args.DataService.LoadObject(contryDynamicView, createdCountry); - - Assert.Equal(country.Название, createdCountry.Название); - } - }); - } - - /// - /// Осуществляет проверку частичного обновления данных (передаются только значения модифицированных атрибутов) - /// для простейшего объекта, т.е. мастера и детейлы не заданы и не модифицируются. - /// Объект с изменениями передается JSON-строкой. - /// - [Fact] - public void PatchSimpleObjectTest() - { - ActODataService(args => - { - // Создаем объект данных, который потом будем обновлять, и добавляем в базу обычным сервисом данных. - Лес лес = new Лес { Название = "Чаща", Площадь = 100 }; - args.DataService.UpdateObject(лес); - - // Обновляем часть атрибутов. - лес.Площадь = 150; - - // Представление, по которому будем обновлять. - string[] медвPropertiesNames = - { - Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лес>(x => x.Площадь) - }; - var лесDynamicView = new View(new ViewAttribute("лесDynamicView", медвPropertiesNames), typeof(Лес)); - - // Преобразуем объект данных в JSON-строку. - string requestJsonData = лес.ToJson(лесDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). - string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)лес.__PrimaryKey).Guid.ToString()); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. - Лес updatedЛес = new Лес { __PrimaryKey = лес.__PrimaryKey }; - args.DataService.LoadObject(updatedЛес); - - Assert.Equal(лес.Площадь, updatedЛес.Площадь); - Assert.Equal(лес.Название, updatedЛес.Название); - } - }); - } - - /// - /// Осуществляет проверку частичного обновления данных (передаются только значения модифицированных атрибутов) - /// для мастера в детейле. - /// По стандарту сервер OData не должен обрабатывать такой запрос и поэтому вернёт HTTP Код 400. - /// Объект с изменениями передается JSON-строкой. - /// - [Fact] - public void PatchComplexObjectTest() - { - ActODataService(args => - { - // Объекты для тестирования обновления. - Медведь медв = new Медведь { Вес = 48 }; - Лес лес1 = new Лес { Название = "Бор" }; - Лес лес2 = new Лес { Название = "Березовая роща" }; - медв.ЛесОбитания = лес1; - var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; - var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; - медв.Берлога.Add(берлога1); - медв.Берлога.Add(берлога2); - - var objs = new DataObject[] { медв, лес1, лес2, берлога1, берлога2 }; - - args.DataService.UpdateObjects(ref objs); - - // Преобразуем объект данных в JSON-строку. - string[] медвPropertiesNames = - { - Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), - }; - var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); - - string[] берлогаPropertiesNames = - { - Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Берлога>(x => x.ЛесРасположения), - }; - var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); - - медвDynamicView.AddDetailInView(Information.ExtractPropertyPath<Медведь>(x => x.Берлога), берлогаDynamicView, true); - - Медведь медвДляЗапроса = new Медведь { __PrimaryKey = медв.__PrimaryKey }; - Берлога берлогаДляЗапроса = new Берлога { __PrimaryKey = берлога1.__PrimaryKey, ЛесРасположения = лес2 }; - медвДляЗапроса.Берлога.Add(берлогаДляЗапроса); - - string requestJsonData = медвДляЗапроса.ToJson(медвDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). - string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)медв.__PrimaryKey).Guid.ToString()); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } - }); - } - - /// - /// Осуществляет проверку удаления данных. - /// - [Fact] - public void DeleteObjectTest() - { - ActODataService(args => - { - // ------------------ Удаление простого объекта с ключом __PrimaryKey в виде строки ----------------------------- - // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. - var класс = new КлассСоСтроковымКлючом(); - args.DataService.UpdateObject(класс); - // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). - string requestUrl = string.Format("http://localhost/odata/{0}('{1}')", args.Token.Model.GetEdmEntitySet(typeof(КлассСоСтроковымКлючом)).Name, класс.__PrimaryKey); - - // Обращаемся к OData-сервису и обрабатываем ответ. - using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект данных был удален из базы. - bool exists = true; - КлассСоСтроковымКлючом deletedКлассСоСтроковымКлючом = new КлассСоСтроковымКлючом { __PrimaryKey = класс.__PrimaryKey }; - try - { - args.DataService.LoadObject(deletedКлассСоСтроковымКлючом); - } - catch (Exception ex) - { - if (ex is CantFindDataObjectException) - exists = false; - } - - Assert.False(exists); - } - - // ------------------ Удаление простого объекта ----------------------------- - // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. - Медведь медв = new Медведь { Пол = tПол.Мужской, Вес = 80, ПорядковыйНомер = 1 }; - args.DataService.UpdateObject(медв); - - // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)медв.__PrimaryKey).Guid.ToString()); - - // Обращаемся к OData-сервису и обрабатываем ответ. - using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект данных был удален из базы. - bool exists = true; - Медведь deletedМедв = new Медведь { __PrimaryKey = медв.__PrimaryKey }; - try - { - args.DataService.LoadObject(deletedМедв); - } - catch (Exception ex) - { - if (ex is CantFindDataObjectException) - exists = false; - } - - Assert.False(exists); - } - - // ------------------ Удаление детейла и объекта с детейлами ----------------------------- - // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. - медв = new Медведь { Пол = tПол.Мужской, Вес = 80, ПорядковыйНомер = 1 }; - медв.Берлога.Add(new Берлога { Наименование = "Берлога для хорошего настроения" }); - медв.Берлога.Add(new Берлога { Наименование = "Берлога для плохого настроения" }); - Берлога delБерлога = new Берлога { Наименование = "Отдельно удаляемая берлога" }; - медв.Берлога.Add(delБерлога); - args.DataService.UpdateObject(медв); - - // Проверяем что до вызова удалений в базе есть все детейлы. - var ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; - LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), Берлога.Views.БерлогаE); - lcs.LoadingTypes = new[] { typeof(Берлога) }; - ICSSoft.STORMNET.DataObject[] dobjs = args.DataService.LoadObjects(lcs); - - Assert.Equal(3, dobjs.Length); - - // Формируем URL запроса к OData-сервису для удаления объекта-детейла (с идентификатором удаляемой сущности). - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)delБерлога.__PrimaryKey).Guid.ToString()); - - // Обращаемся к OData-сервису и обрабатываем ответ. - using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект-детейл был удален из базы. - bool exists = true; - Берлога deletedБерлога = new Берлога { __PrimaryKey = delБерлога.__PrimaryKey }; - try - { - args.DataService.LoadObject(deletedБерлога); - } - catch (Exception ex) - { - if (ex is CantFindDataObjectException) - exists = false; - } - - Assert.False(exists); - - // Проверяем что объект-агрегатор остался в базе. - exists = true; - Медведь deletedМедв = new Медведь { __PrimaryKey = медв.__PrimaryKey }; - try - { - args.DataService.LoadObject(deletedМедв); - } - catch (Exception ex) - { - if (ex is CantFindDataObjectException) - exists = false; - } - - Assert.True(exists); - - // Проверяем что детейлов объекта в базе осталось на 1 меньше, чем создавали. - dobjs = args.DataService.LoadObjects(lcs); - - Assert.Equal(2, dobjs.Length); - } - - // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)медв.__PrimaryKey).Guid.ToString()); - - // Обращаемся к OData-сервису для удаления объекта с детейлами и обрабатываем ответ. - using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект данных был удален из базы. - bool exists = true; - Медведь deletedМедв = new Медведь { __PrimaryKey = медв.__PrimaryKey }; - try - { - args.DataService.LoadObject(deletedМедв); - } - catch (Exception ex) - { - if (ex is CantFindDataObjectException) - exists = false; - } - - Assert.False(exists); - - // Проверяем что детейлов объекта в базе не осталось. - dobjs = args.DataService.LoadObjects(lcs); - - Assert.Equal(0, dobjs.Length); - } - }); - } - - /// - /// Осуществляет проверку обновления мастера с иерархическими детейлами. - /// Мастер и детейлы заданы и модифицируются. - /// Объект с изменениями передается JSON-строкой. - /// - [Fact] - public void UpdateCicleDeteilTest() - { - ActODataService(args => - { - // Мастер тестирования обновления. - TestMaster testMaster1 = new TestMaster { TestMasterName = "TestMasterName" }; - var objs = new DataObject[] { testMaster1 }; - args.DataService.UpdateObjects(ref objs); - - // Колличество создаваемых детейлов. - int deteilCount = 20; - - // Детейлы тестирования обновления. - TestDetailWithCicle[] testDetailWithCicleArray = new TestDetailWithCicle[deteilCount]; - TestDetailWithCicle testDetailWithCicle = null; - - for (int i = 0; i < deteilCount; i++) - { - if (i == 0) - { - testDetailWithCicle = new TestDetailWithCicle { TestDetailName = "TestDeteilName0", TestMaster = testMaster1 }; - } - else - { - testDetailWithCicle = new TestDetailWithCicle { TestDetailName = "TestDeteilName" + i.ToString(), TestMaster = testMaster1, Parent = testDetailWithCicle }; - } - - testDetailWithCicleArray[i] = testDetailWithCicle; - objs = new DataObject[] { testDetailWithCicle }; - args.DataService.UpdateObjects(ref objs); - } - - // Обновляем атрибут мастера. - testMaster1.TestMasterName = "TestMasterNameUpdate"; - - // Представление, по которому будем обновлять. - string[] testMasterPropertiesNames = - { - Information.ExtractPropertyPath(x => x.__PrimaryKey), - Information.ExtractPropertyPath(x => x.TestMasterName) - }; - var testMasterDynamicView = new View(new ViewAttribute("testMasterDynamicView", testMasterPropertiesNames), typeof(TestMaster)); - - // Преобразуем объект данных в JSON-строку. - string requestJsonData = testMaster1.ToJson(testMasterDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). - string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(TestMaster)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)testMaster1.__PrimaryKey).Guid.ToString()); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. - TestMaster updatedTestMaster = new TestMaster { __PrimaryKey = testMaster1.__PrimaryKey }; - args.DataService.LoadObject(updatedTestMaster); - - Assert.Equal(testMaster1.TestMasterName, updatedTestMaster.TestMasterName); - } - - // Обновление атрибутов Детейлов. - for (int i = 0; i < deteilCount; i++) - { - testDetailWithCicleArray[i].TestDetailName += "Update"; - } - - // Представление, по которому будем обновлять. - string[] testDetailWithCiclePropertiesNames = - { - Information.ExtractPropertyPath(x => x.__PrimaryKey), - Information.ExtractPropertyPath(x => x.TestDetailName) - }; - - var testDetailWithCicleDynamicView = new View(new ViewAttribute("testDetailWithCicleDynamicView", testDetailWithCiclePropertiesNames), typeof(TestDetailWithCicle)); - - for (int i = 0; i < deteilCount; i++) - { - // Преобразуем объект данных в JSON-строку. - string requestJsonDatatestDetailWithCicle = testDetailWithCicleArray[i].ToJson(testDetailWithCicleDynamicView, args.Token.Model); - DataObjectDictionary objJson = DataObjectDictionary.Parse(requestJsonDatatestDetailWithCicle, testDetailWithCicleDynamicView, args.Token.Model); - - objJson.Add("TestMaster@odata.bind", string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(TestMaster)).Name, - ((KeyGuid)testMaster1.__PrimaryKey).Guid.ToString("D"))); - - if (i != 0) - { - objJson.Add("Parent@odata.bind", string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(TestDetailWithCicle)).Name, - ((KeyGuid)testDetailWithCicleArray[i - 1].__PrimaryKey).Guid.ToString("D"))); - } - - requestJsonDatatestDetailWithCicle = objJson.Serialize(); - - // Формируем URL запроса к OData-сервису. - requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(TestDetailWithCicle)).Name, ((KeyGuid)testDetailWithCicleArray[i].__PrimaryKey).Guid.ToString()); - - using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDatatestDetailWithCicle).Result) - { - // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - - // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. - TestDetailWithCicle updatedTestDetailWithCicle = new TestDetailWithCicle { __PrimaryKey = testDetailWithCicleArray[i].__PrimaryKey }; - args.DataService.LoadObject(updatedTestDetailWithCicle); - - Assert.Equal(testDetailWithCicleArray[i].TestDetailName, updatedTestDetailWithCicle.TestDetailName); - } - } - }); - } - - /// - /// Test save details with inheritance. - /// - [Fact] - public void SaveDetailWithInheritanceTest() - { - ActODataService(args => - { - var базовыйКласс = new БазовыйКласс() { Свойство1 = "sv1" }; - var детейл = new ДетейлНаследник() { prop1 = 1 }; - базовыйКласс.Детейл.Add(детейл); - - args.DataService.UpdateObject(базовыйКласс); - int newValue = 2; - детейл.prop1 = newValue; - - const string baseUrl = "http://localhost/odata"; - - string detJson = детейл.ToJson(ДетейлНаследник.Views.ДетейлНаследникE, args.Token.Model); - detJson = detJson.Replace(nameof(ДетейлНаследник.БазовыйКласс), $"{nameof(ДетейлНаследник.БазовыйКласс)}@odata.bind"); - detJson = detJson.Replace("{\"__PrimaryKey\":\"", $"\"{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}("); - detJson = detJson.Replace("\"}", ")\""); - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}", - "{}", - базовыйКласс), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(ДетейлНаследник)).Name}", - detJson, - детейл), - }; - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); - - args.DataService.LoadObject(БазовыйКласс.Views.БазовыйКлассE, базовыйКласс); - - var детейлы = базовыйКласс.Детейл.Cast<ДетейлНаследник>(); - - Assert.Equal(1, детейлы.Count()); - Assert.Equal(newValue, детейлы.First().prop1); - } - }); - } - - /// - /// Test update details with Aggregator. - /// - [Fact] - public void UpdateDetailWithAggregatorTest() - { - ActODataService(args => - { - string[] лапаPropertiesNames = - { - Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лапа>(x => x.Размер), - }; - string[] кошкаPropertiesNames = - { - Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Кошка>(x => x.Кличка), - Information.ExtractPropertyPath<Кошка>(x => x.Тип), - Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), - }; - var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); - var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); - - var порода = new Порода() { Название = "Первая" }; - var кошка = new Кошка() { Кличка = "50", Порода = порода, Тип = ТипКошки.Домашняя }; - var лапа = new Лапа() { Размер = 50 }; - кошка.Лапа.Add(лапа); - - args.DataService.UpdateObject(кошка); - - кошка.Кличка = "100"; - кошка.Тип = ТипКошки.Дикая; - лапа.Размер = 100; - - const string baseUrl = "http://localhost/odata"; - - string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); - DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); - - objJsonЛапа.Add( - $"{nameof(Лапа.Кошка)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, - ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataЛапа = objJsonЛапа.Serialize(); - - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name}", - кошка.ToJson(кошкаDynamicView, args.Token.Model), - кошка), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", - requestJsonDataЛапа, - лапа), - }; - - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); - - кошкаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Кошка>(x => x.Лапа), лапаDynamicView, true); - - args.DataService.LoadObject(кошкаDynamicView, кошка); - - var лапы = кошка.Лапа.Cast<Лапа>(); - - Assert.Equal("100", кошка.Кличка); - Assert.Equal(ТипКошки.Дикая, кошка.Тип); - Assert.Equal(1, лапы.Count(б => б.Размер == 100)); - } - }); - } - - /// - /// Test update details with Aggregator. - /// - [Fact] - public void UpdateSecondDetailWithAggregatorTest() - { - ActODataService(args => - { - // Arrange. - DateTime date = new DateTime(2010, 10, 10, 10, 10, 10, DateTimeKind.Local); - var порода = new Порода() { Название = "Первая" }; - var кошка = new Кошка() { Кличка = "50", Порода = порода }; - var лапа = new Лапа() { Размер = 50 }; - кошка.Лапа.Add(лапа); - var перелом = new Перелом() { Дата = DateTime.UtcNow, Тип = ТипПерелома.Открытый }; - лапа.Перелом.Add(перелом); - - args.DataService.UpdateObject(кошка); - - string[] переломPropertiesNames = - { - Information.ExtractPropertyPath<Перелом>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Перелом>(x => x.Дата), - }; - var переломDynamicView = new View(new ViewAttribute("переломDynamicView", переломPropertiesNames), typeof(Перелом)); - - string[] лапаPropertiesNames = - { - Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лапа>(x => x.Размер), - Information.ExtractPropertyPath<Лапа>(x => x.РазмерСтрокой), - }; - var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); - - string[] кошкаPropertiesNames = - { - Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Кошка>(x => x.Кличка), - Information.ExtractPropertyPath<Кошка>(x => x.Тип), - Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), - }; - var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); - - лапа.Размер = 100; - перелом.Дата = date; - - const string baseUrl = "http://localhost/odata"; - - string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); - DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); - - objJsonЛапа.Add( - $"{nameof(Лапа.Кошка)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, - ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataЛапа = objJsonЛапа.Serialize(); - - string requestJsonDataПерелом = перелом.ToJson(переломDynamicView, args.Token.Model); - DataObjectDictionary objJsonПерелом = DataObjectDictionary.Parse(requestJsonDataПерелом, переломDynamicView, args.Token.Model); - - objJsonПерелом.Add( - $"{nameof(Перелом.Лапа)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name, - ((KeyGuid)лапа.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataПерелом = objJsonПерелом.Serialize(); - - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", - requestJsonDataЛапа, - лапа), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Перелом)).Name}", - requestJsonDataПерелом, - перелом), - }; - - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); - - кошкаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Кошка>(x => x.Лапа), лапаDynamicView, true); - лапаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Лапа>(x => x.Перелом), переломDynamicView, true); - - args.DataService.LoadObject(кошкаDynamicView, кошка); - - var лапы = кошка.Лапа.Cast<Лапа>(); - - var переломы = лапы.FirstOrDefault().Перелом.Cast<Перелом>(); - - Assert.Equal("50", кошка.Кличка); - Assert.Equal(1, лапы.Count(б => б.Размер == 100)); - Assert.Equal(1, переломы.Count(б => б.Дата == date.ToUniversalTime())); - } - }); - } - - /// - /// Test delete and add detail. - /// - [Fact] - public void UpdateDeletedAndAddedDetailWithAggregatorTest() - { - ActODataService(args => - { - string[] лапаPropertiesNames = - { - Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лапа>(x => x.Размер), - }; - string[] кошкаPropertiesNames = - { - Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Кошка>(x => x.Кличка), - Information.ExtractPropertyPath<Кошка>(x => x.Тип), - Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), - }; - var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); - var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); - - var порода = new Порода() { Название = "Первая" }; - var кошка = new Кошка() { Кличка = "50", Порода = порода, Тип = ТипКошки.Домашняя }; - var лапа = new Лапа() { Размер = 50 }; - var лапа2 = new Лапа() { Размер = 1000 }; - var лапа3 = new Лапа() { Размер = 2000 }; - кошка.Лапа.Add(лапа); - кошка.Лапа.Add(лапа2); - - args.DataService.UpdateObject(кошка); - - кошка.Кличка = "100"; - кошка.Тип = ТипКошки.Дикая; - лапа.Размер = 100; - - const string baseUrl = "http://localhost/odata"; - - string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); - DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); - - objJsonЛапа.Add( - $"{nameof(Лапа.Кошка)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, - ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataЛапа = objJsonЛапа.Serialize(); - - лапа2.SetStatus(ObjectStatus.Deleted); - - string requestJsonDataЛапа3 = лапа3.ToJson(лапаDynamicView, args.Token.Model); - DataObjectDictionary objJsonЛапа3 = DataObjectDictionary.Parse(requestJsonDataЛапа3, лапаDynamicView, args.Token.Model); - - objJsonЛапа3.Add( - $"{nameof(Лапа.Кошка)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, - ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataЛапа3 = objJsonЛапа3.Serialize(); - - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", - string.Empty, - лапа2), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", - requestJsonDataЛапа3, - лапа3), - }; - - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.NoContent, HttpStatusCode.Created }); - - кошкаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Кошка>(x => x.Лапа), лапаDynamicView, true); - - args.DataService.LoadObject(кошкаDynamicView, кошка); - - var лапы = кошка.Лапа.Cast<Лапа>(); - - Assert.Equal(2, лапы.Count()); - Assert.Equal(1, лапы.Count(x => x.Размер == 2000)); - Assert.Equal(0, лапы.Count(x => x.Размер == 1000)); - } - }); - } - - /// - /// Test batch update error handling when business server throws exception. - /// - [Fact] - public void BatchUpdateErrorHandlingTest() - { - ActODataService(args => - { - string[] лапаPropertiesNames = - { - Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Лапа>(x => x.Размер), - }; - string[] кошкаPropertiesNames = - { - Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Кошка>(x => x.Кличка), - Information.ExtractPropertyPath<Кошка>(x => x.Тип), - Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), - }; - var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); - var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); - - var порода = new Порода() { Название = "Первая" }; - var кошка = new Кошка() { Кличка = "50", Порода = порода, Тип = ТипКошки.Домашняя }; - var лапа = new Лапа() { Размер = 50 }; - кошка.Лапа.Add(лапа); - - args.DataService.UpdateObject(кошка); - - кошка.Кличка = "100"; - кошка.Тип = ТипКошки.Дикая; - - // Этот размер лапы указан в CatsBS как недопустимый размер, будет сгенерировано исключение. - лапа.Размер = 100899; - - const string baseUrl = "http://localhost/odata"; - - string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); - DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); - - objJsonЛапа.Add( - $"{nameof(Лапа.Кошка)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, - ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); - - requestJsonDataЛапа = objJsonЛапа.Serialize(); - - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name}", - кошка.ToJson(кошкаDynamicView, args.Token.Model), - кошка), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", - requestJsonDataЛапа, - лапа), - }; - - int exceptionHandled = 0; - - args.Token.Events.CallbackAfterInternalServerError = (Exception exception, ref HttpStatusCode code) => - { - Exception currentException = exception; - - while (currentException != null) - { - if (currentException.Message == "Недопустимый размер кошачьей лапы!") - { - exceptionHandled++; - } - - currentException = currentException.InnerException; - } - - return exception; - }; - - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); - Assert.Equal(1, exceptionHandled); - } - }); - } - - /// - /// Test update agregator with inheritance details. - /// - [Fact] - public void UpdateAgregatorWithInheritanceDetailsTest() - { - ActODataService(args => - { - var son = new Son() { Name = "Yakov", SuspendersColor = "Brown" }; - var daughter = new Daughter() { Name = "Yana", DressColor = "Red" }; - var person = new Person() { Name = "Yan" }; - person.Childrens.AddRange(son, daughter); - - args.DataService.UpdateObject(person); - - person.Name = "Yan Yakovlevich"; - - // Преобразуем объект данных в JSON-строку. - string[] personPropertiesNames = - { - Information.ExtractPropertyPath(x => x.__PrimaryKey), - Information.ExtractPropertyPath(x => x.Name) - }; - - var personDynamicView = new View(new ViewAttribute("personDynamicView", personPropertiesNames), typeof(Person)); - - string requestJsonData = person.ToJson(personDynamicView, args.Token.Model); - - // Формируем URL запроса к OData-сервису. - string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Person)).Name); - - // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. - using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) - { - // Убедимся, что запрос завершился успешно. - Assert.Equal(HttpStatusCode.Created, response.StatusCode); - } - }); - } - - /// - /// Test batch update detail of detail. - /// - [Fact] - public void UpdateDetailOfDetailTest() - { - ActODataService(args => - { - var базовыйКласс = new БазовыйКласс() { Свойство1 = "sv1" }; - var детейл = new Детейл() { prop1 = 1 }; - базовыйКласс.Детейл.Add(детейл); - var детейл2 = new Детейл2() { prop2 = "2" }; - детейл.Детейл2.Add(детейл2); - - args.DataService.UpdateObject(базовыйКласс); - string newValue = "new"; - базовыйКласс.Свойство1 = newValue; - детейл2.prop2 = newValue; - - const string baseUrl = "http://localhost/odata"; - - string[] classPropertiesNames = - { - Information.ExtractPropertyPath<БазовыйКласс>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<БазовыйКласс>(x => x.Свойство1), - }; - - string[] detail2PropertiesNames = - { - Information.ExtractPropertyPath<Детейл2>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Детейл2>(x => x.prop2), - }; - - var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(БазовыйКласс)); - var detail2DynamicView = new View(new ViewAttribute("detailDynamicView", detail2PropertiesNames), typeof(Детейл2)); - - string classJson = базовыйКласс.ToJson(classDynamicView, args.Token.Model); - string detJson = детейл2.ToJson(detail2DynamicView, args.Token.Model); - - DataObjectDictionary objJson = DataObjectDictionary.Parse(detJson, detail2DynamicView, args.Token.Model); - - objJson.Add( - $"{nameof(Детейл2.Детейл)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Детейл)).Name, - ((KeyGuid)детейл.__PrimaryKey).Guid.ToString("D"))); - - detJson = objJson.Serialize(); - - detail2DynamicView.AddProperty(Information.ExtractPropertyPath<Детейл2>(x => x.Детейл)); - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}", - classJson, - базовыйКласс), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Детейл2)).Name}", - detJson, - детейл2), - }; - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); - - args.DataService.LoadObject(detail2DynamicView, детейл2); - - Assert.Equal(newValue, детейл2.prop2); - } - }); - } - - /// - /// Test batch update detail of detail. - /// - [Fact] - public void UpdateDetailOfDetailDescOrderTest() - { - ActODataService(args => - { - var базовыйКласс = new БазовыйКласс() { Свойство1 = "sv1" }; - var детейл = new Детейл() { prop1 = 1 }; - базовыйКласс.Детейл.Add(детейл); - var детейл2 = new Детейл2() { prop2 = "2" }; - детейл.Детейл2.Add(детейл2); - - args.DataService.UpdateObject(базовыйКласс); - string newValue = "new"; - базовыйКласс.Свойство1 = newValue; - детейл2.prop2 = newValue; - - const string baseUrl = "http://localhost/odata"; - - string[] classPropertiesNames = - { - Information.ExtractPropertyPath<БазовыйКласс>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<БазовыйКласс>(x => x.Свойство1), - }; - - string[] detail2PropertiesNames = - { - Information.ExtractPropertyPath<Детейл2>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Детейл2>(x => x.prop2), - }; - - var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(БазовыйКласс)); - var detail2DynamicView = new View(new ViewAttribute("detailDynamicView", detail2PropertiesNames), typeof(Детейл2)); - - string classJson = базовыйКласс.ToJson(classDynamicView, args.Token.Model); - string detJson = детейл2.ToJson(detail2DynamicView, args.Token.Model); - - DataObjectDictionary objJson = DataObjectDictionary.Parse(detJson, detail2DynamicView, args.Token.Model); - - objJson.Add( - $"{nameof(Детейл2.Детейл)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Детейл)).Name, - ((KeyGuid)детейл.__PrimaryKey).Guid.ToString("D"))); - - detJson = objJson.Serialize(); - - detail2DynamicView.AddProperty(Information.ExtractPropertyPath<Детейл2>(x => x.Детейл)); - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Детейл2)).Name}", - detJson, - детейл2), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}", - classJson, - базовыйКласс), - }; - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); - - args.DataService.LoadObject(detail2DynamicView, детейл2); - - Assert.Equal(newValue, детейл2.prop2); - } - }); - } - - /// - /// Test batch update detail and another type detail. - /// - [Fact] - public void UpdateDetailAndDetailTest() - { - ActODataService(args => - { - var базовыйКласс = new Библиотека() { Адрес = "ул. Пушкина" }; - var мастер = new Автор() { Имя = "Александр" }; - var детейл1 = new Книга() { Название = "Му-Му", Автор1 = мастер }; - базовыйКласс.Книга.Add(детейл1); - var детейл2 = new Журнал() { Номер = 2, Автор2 = мастер }; - базовыйКласс.Журнал.Add(детейл2); - - args.DataService.UpdateObject(базовыйКласс); - string newValue = "ул. Лермонтова"; - int newIntValue = 3; - базовыйКласс.Адрес = newValue; - детейл1.Название = newValue; - детейл2.Номер = newIntValue; - - const string baseUrl = "http://localhost/odata"; - - string[] classPropertiesNames = - { - Information.ExtractPropertyPath<Библиотека>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Библиотека>(x => x.Адрес), - }; - - string[] detail1PropertiesNames = - { - Information.ExtractPropertyPath<Книга>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Книга>(x => x.Название), - }; - - string[] detail2PropertiesNames = - { - Information.ExtractPropertyPath<Журнал>(x => x.__PrimaryKey), - Information.ExtractPropertyPath<Журнал>(x => x.Номер), - }; - - var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(Библиотека)); - var detail1DynamicView = new View(new ViewAttribute("detailDynamicView", detail1PropertiesNames), typeof(Книга)); - var detail2DynamicView = new View(new ViewAttribute("detailDynamicView", detail2PropertiesNames), typeof(Журнал)); - - string classJson = базовыйКласс.ToJson(classDynamicView, args.Token.Model); - string det1Json = детейл1.ToJson(detail1DynamicView, args.Token.Model); - string det2Json = детейл2.ToJson(detail2DynamicView, args.Token.Model); - - DataObjectDictionary obj1Json = DataObjectDictionary.Parse(det1Json, detail1DynamicView, args.Token.Model); - - obj1Json.Add( - $"{nameof(Книга.Библиотека1)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Библиотека)).Name, - ((KeyGuid)базовыйКласс.__PrimaryKey).Guid.ToString("D"))); - - det1Json = obj1Json.Serialize(); - - DataObjectDictionary obj2Json = DataObjectDictionary.Parse(det2Json, detail2DynamicView, args.Token.Model); - - obj2Json.Add( - $"{nameof(Журнал.Библиотека2)}@odata.bind", - string.Format( - "{0}({1})", - args.Token.Model.GetEdmEntitySet(typeof(Библиотека)).Name, - ((KeyGuid)базовыйКласс.__PrimaryKey).Guid.ToString("D"))); - - det2Json = obj2Json.Serialize(); - - string[] changesets = new[] - { - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Библиотека)).Name}", - classJson, - базовыйКласс), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Книга)).Name}", - det1Json, - детейл1), - CreateChangeset( - $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Журнал)).Name}", - det2Json, - детейл2), - }; - HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); - using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) - { - CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK, HttpStatusCode.OK }); - - classDynamicView.AddDetailInView(nameof(Библиотека.Книга), detail1DynamicView, true); - classDynamicView.AddDetailInView(nameof(Библиотека.Журнал), detail2DynamicView, true); - - args.DataService.LoadObject(classDynamicView, базовыйКласс); - - Assert.Equal(newValue, базовыйКласс.Адрес = newValue); - Assert.Equal(newValue, базовыйКласс.Книга[0].Название); - Assert.Equal(newIntValue, базовыйКласс.Журнал[0].Номер); - - } - }); - } - } -} +namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD.Update +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Net; + using System.Net.Http; + using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing; + using ICSSoft.STORMNET; + using ICSSoft.STORMNET.Business; + using ICSSoft.STORMNET.Business.LINQProvider; + using ICSSoft.STORMNET.Exceptions; + using ICSSoft.STORMNET.KeyGen; + using ICSSoft.STORMNET.Windows.Forms; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Helpers; + + using Newtonsoft.Json; + using Xunit; + + /// + /// Класс тестов для тестирования операций модификации данных OData-сервисом (вставка, обновление, удаление). + /// +#if NETFRAMEWORK + public class ModifyDataTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class ModifyDataTest : BaseODataServiceIntegratedTest +#endif + { +#if NETCOREAPP + /// + /// Конструктор по-умолчанию. + /// + /// Фабрика для приложения. + /// Вывод отладочной информации. + public ModifyDataTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + : base(factory, output) + { + } +#endif + + /// + /// Осуществляет проверку того, что при PATCH запросах происходит вставка и удаление связей объекта. + /// Зависимые объекты (мастера, детейлы) представлены в виде - Имя_Связи@odata.bind: Имя_Набора_Сущностей(ключ) или Имя_Связи@odata.bind: [ Имя_Набора_Сущностей(ключ) ] . + /// Тест проверяет следующие факты: + /// + /// Вставка связи мастерового объекта. + /// Удаление связи мастеровго объекта путём присвоения null свойству. + /// Удаление связи мастеровго объекта путём присвоения null для Имя_Связи@odata.bind. + /// + /// + [Fact] + public void PatchNavigationPropertiesTest() + { + ActODataService(args => + { + string[] берлогаPropertiesNames = + { + Information.ExtractPropertyPath<Берлога>(x => x.ПолеБС), + Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Берлога>(x => x.Наименование), + Information.ExtractPropertyPath<Берлога>(x => x.Заброшена) + }; + string[] лесPropertiesNames = + { + Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лес>(x => x.Площадь), + Information.ExtractPropertyPath<Лес>(x => x.Название), + Information.ExtractPropertyPath<Лес>(x => x.ДатаПоследнегоОсмотра) + }; + string[] медвPropertiesNames = + { + Information.ExtractPropertyPath<Медведь>(x => x.ПолеБС), + Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Медведь>(x => x.Вес), + + // Information.ExtractPropertyPath<Медведь>(x => x.Пол), + Information.ExtractPropertyPath<Медведь>(x => x.ДатаРождения), + Information.ExtractPropertyPath<Медведь>(x => x.ПорядковыйНомер) + }; + var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); + var лесDynamicView = new View(new ViewAttribute("лесDynamicView", лесPropertiesNames), typeof(Лес)); + var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); + + // Объекты для тестирования создания. + Медведь медв = new Медведь { Вес = 48 }; + Лес лес1 = new Лес { Название = "Бор" }; + Лес лес2 = new Лес { Название = "Березовая роща" }; + var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; + var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; + медв.Берлога.Add(берлога1); + var objs = new DataObject[] { медв, лес1, лес2, берлога1 }; + args.DataService.UpdateObjects(ref objs); + string requestUrl; + + string requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); + DataObjectDictionary objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); + + objJson.Add("ЛесОбитания@odata.bind", string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name, + ((KeyGuid)лес1.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataМедв = objJson.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) + { + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + } + + var requestJsonDataБерлога = берлога1.ToJson(берлогаDynamicView, args.Token.Model); + objJson = DataObjectDictionary.Parse(requestJsonDataБерлога, берлогаDynamicView, args.Token.Model); + objJson.Add("Медведь", null); + requestJsonDataБерлога = objJson.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataБерлога).Result) + { + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + + requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); + objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); + objJson.Add("ЛесОбитания@odata.bind", null); + requestJsonDataМедв = objJson.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); + + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) + { + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + } + + requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); + objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); + objJson.Add("ЛесОбитания", null); + requestJsonDataМедв = objJson.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); + + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) + { + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + } + + requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); + objJson = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); + objJson.Add("Берлога@odata.bind", null); + requestJsonDataМедв = objJson.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((KeyGuid)медв.__PrimaryKey).Guid.ToString()); + + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) + { + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + }); + } + + /// + /// Осуществляет проверку того, что при POST запросах происходит вставка и удаление связей объекта. + /// Зависимые объекты (мастера, детейлы) представлены в виде - Имя_Связи@odata.bind: Имя_Набора_Сущностей(ключ) или Имя_Связи@odata.bind: [ Имя_Набора_Сущностей(ключ) ] . + /// Тест проверяет следующие факты: + /// + /// Вставка связи мастерового объекта. + /// Удаление связи мастеровго объекта путём присвоения null свойству. + /// Удаление связи мастеровго объекта путём присвоения null для Имя_Связи@odata.bind. + /// + /// + [Fact] + public void PostNavigationPropertiesTest() + { + string[] берлогаPropertiesNames = + { + // Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Берлога>(x => x.Наименование), + Information.ExtractPropertyPath<Берлога>(x => x.Заброшена) + }; + string[] лесPropertiesNames = + { + // Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лес>(x => x.Площадь), + Information.ExtractPropertyPath<Лес>(x => x.Название), + Information.ExtractPropertyPath<Лес>(x => x.ДатаПоследнегоОсмотра) + }; + string[] медвPropertiesNames = + { + // Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Медведь>(x => x.Вес), + + // Information.ExtractPropertyPath<Медведь>(x => x.Пол), + Information.ExtractPropertyPath<Медведь>(x => x.ДатаРождения), + Information.ExtractPropertyPath<Медведь>(x => x.ПорядковыйНомер) + }; + var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); + var лесDynamicView = new View(new ViewAttribute("лесDynamicView", лесPropertiesNames), typeof(Лес)); + var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); + + // Объекты для тестирования создания. + Медведь медв = new Медведь { Вес = 48 }; + Лес лес1 = new Лес { Название = "Бор" }; + var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; + ActODataService(args => + { + string requestUrl; + string receivedJsonЛес1, receivedJsonМедв; + string requestJsonDataЛес1 = лес1.ToJson(лесDynamicView, args.Token.Model); + requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name); + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonDataЛес1).Result) + { + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + + // Получим строку с ответом (в ней должна вернуться созданная сущность). + receivedJsonЛес1 = response.Content.ReadAsStringAsync().Result.Beautify(); + } + + string requestJsonDataМедв = медв.ToJson(медвDynamicView, args.Token.Model); + DataObjectDictionary objJsonМедв = DataObjectDictionary.Parse(requestJsonDataМедв, медвDynamicView, args.Token.Model); + Dictionary receivedDict = JsonConvert.DeserializeObject>(receivedJsonЛес1); + + objJsonМедв.Add("ЛесОбитания@odata.bind", string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name, + receivedDict["__PrimaryKey"])); + objJsonМедв.Add("Берлога@odata.bind", null); + + requestJsonDataМедв = objJsonМедв.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name); + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonDataМедв).Result) + { + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + + // Получим строку с ответом (в ней должна вернуться созданная сущность). + receivedJsonМедв = response.Content.ReadAsStringAsync().Result.Beautify(); + } + + var requestJsonDataБерлога = берлога1.ToJson(берлогаDynamicView, args.Token.Model); + var objJson = DataObjectDictionary.Parse(requestJsonDataБерлога, берлогаDynamicView, args.Token.Model); + receivedDict = JsonConvert.DeserializeObject>(receivedJsonМедв); + objJson.Add("Медведь@odata.bind", string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, + receivedDict["__PrimaryKey"])); + requestJsonDataБерлога = objJson.Serialize(); + requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name); + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonDataБерлога).Result) + { + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + } + }); + } + + /// + /// Осуществляет проверку того, что при POST запросах происходит вставка объекта, + /// зависимые объекты (мастера, детейлы) обрабатываются в зависимости от наличия в БД - вставляются или обновляются. + /// + [Fact] + public void PostComplexObjectTest() + { + ActODataService(args => + { + string[] берлогаPropertiesNames = + { + Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Берлога>(x => x.Наименование), + Information.ExtractPropertyPath<Берлога>(x => x.ЛесРасположения), + Information.ExtractPropertyPath<Берлога>(x => x.ЛесРасположения.Название), + }; + string[] медвPropertiesNames = + { + Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Медведь>(x => x.Вес), + Information.ExtractPropertyPath<Медведь>(x => x.ЛесОбитания), + Information.ExtractPropertyPath<Медведь>(x => x.ЛесОбитания.Название), + }; + var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); + var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); + медвDynamicView.AddDetailInView(Information.ExtractPropertyPath<Медведь>(x => x.Берлога), берлогаDynamicView, true); + + // Объекты для тестирования создания. + Медведь медв = new Медведь { Вес = 48 }; + Лес лес1 = new Лес { Название = "Бор" }; + Лес лес2 = new Лес { Название = "Березовая роща" }; + медв.ЛесОбитания = лес1; + var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; + var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; + медв.Берлога.Add(берлога1); + медв.Берлога.Add(берлога2); + + string json = медв.ToJson(медвDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису. + string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. + HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).Result; + + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + + // Получим строку с ответом. + string receivedJsonObjs = response.Content.ReadAsStringAsync().Result.Beautify(); + + // В ответе приходит объект с созданной сущностью. + // Преобразуем полученный объект в словарь. + Dictionary receivedObjs = JsonConvert.DeserializeObject>(receivedJsonObjs); + + // Проверяем созданный объект, вычитав с помощью DataService + DataObject createdObj = new Медведь { __PrimaryKey = медв.__PrimaryKey }; + args.DataService.LoadObject(createdObj); + + Assert.Equal(ObjectStatus.UnAltered, createdObj.GetStatus()); + Assert.Equal(((Медведь)createdObj).Вес, (int)(long)receivedObjs["Вес"]); + + // Проверяем что созданы все зависимые объекты, вычитав с помощью DataService + var ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; + LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE); + lcs.LoadingTypes = new[] { typeof(Лес) }; + DataObject[] dobjs = args.DataService.LoadObjects(lcs); + + Assert.Equal(2, dobjs.Length); + + lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), Берлога.Views.БерлогаE); + lcs.LoadingTypes = new[] { typeof(Берлога) }; + dobjs = args.DataService.LoadObjects(lcs); + Assert.Equal(2, dobjs.Length); + + // Создание объекта и обновление связанных + // Создаем нового медведя: в его мастере ЛесОбитания - лес1, но в нём изменим Название; в детейлы заберем от первого медведя детейл2, изменив Название в мастере детейла. + // Подготовка тестовых данных в формате OData. + Медведь медвежонок = new Медведь { Вес = 12 }; + var берлога3 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; + медвежонок.Берлога.Add(берлога3); + + медв.Берлога.Remove(берлога2); + медвежонок.Берлога.Add(берлога2); + + лес1.Название = лес1.Название + "(обновл)"; + лес2.Название = лес2.Название + "(обновл)"; + + json = медвежонок.ToJson(медвDynamicView, args.Token.Model); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. + response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).Result; + + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + + // Проверяем созданный объект, вычитав с помощью DataService + createdObj = new Медведь { __PrimaryKey = медвежонок.__PrimaryKey }; + args.DataService.LoadObject(createdObj); + + Assert.Equal(ObjectStatus.UnAltered, createdObj.GetStatus()); + Assert.Equal(12, ((Медведь)createdObj).Вес); + + // Проверяем что созданы все зависимые объекты, вычитав с помощью DataService + ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; + lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE); + lcs.LoadingTypes = new[] { typeof(Лес) }; + lcs.LimitFunction = ldef.GetFunction( + ldef.funcEQ, + new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.StormMainObjectKey), + лес1.__PrimaryKey); + dobjs = args.DataService.LoadObjects(lcs); + + Assert.Single(dobjs); + Assert.EndsWith("(обновл)", ((Лес)dobjs[0]).Название); + + lcs.LimitFunction = ldef.GetFunction( + ldef.funcEQ, + new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.StormMainObjectKey), + лес2.__PrimaryKey); + dobjs = args.DataService.LoadObjects(lcs); + + Assert.Single(dobjs); + Assert.EndsWith("(обновл)", ((Лес)dobjs[0]).Название); + + lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), Берлога.Views.БерлогаE); + lcs.LoadingTypes = new[] { typeof(Берлога) }; + lcs.LimitFunction = ldef.GetFunction( + ldef.funcEQ, + new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, "Медведь"), + медв.__PrimaryKey); + dobjs = args.DataService.LoadObjects(lcs); + + Assert.Single(dobjs); + + lcs.LimitFunction = ldef.GetFunction( + ldef.funcEQ, + new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, "Медведь"), + медвежонок.__PrimaryKey); + dobjs = args.DataService.LoadObjects(lcs); + + Assert.Equal(2, dobjs.Length); + }); + } + + /// + /// Осуществляет проверку создания сущности с датой и незаданным первичным ключом. + /// + [Fact] + public void PostObjDateTimeNoPKTest() + { + ActODataService(args => + { + // Создаем объект данных. + Лес country = new Лес { Площадь = 10, Название = "Бор", ДатаПоследнегоОсмотра = (ICSSoft.STORMNET.UserDataTypes.NullableDateTime)DateTime.Now }; + + // Преобразуем объект данных в JSON-строку. + string[] contryPropertiesNames = + { + Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лес>(x => x.Площадь), + Information.ExtractPropertyPath<Лес>(x => x.Название), + Information.ExtractPropertyPath<Лес>(x => x.ДатаПоследнегоОсмотра) + }; + var contryDynamicView = new View(new ViewAttribute("ContryDynamicView", contryPropertiesNames), typeof(Лес)); + + string requestJsonData = country.ToJson(contryDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису. + string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + } + }); + } + + /// + /// Осуществляет проверку того, что при POST запросах, отправляющих простейшие объекты JSON-строкой, происходит корректная вставка. + /// + [Fact] + public void PostDataTimeValueTest() + { + ActODataService(args => + { + // Создаем объект данных. + КлассСМножествомТипов класс = new КлассСМножествомТипов() { PropertyDateTime = DateTime.Now }; + + // Преобразуем объект данных в JSON-строку. + string[] classPropertiesNames = + { + Information.ExtractPropertyPath<КлассСМножествомТипов>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<КлассСМножествомТипов>(x => x.PropertyDateTime) + }; + + var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(КлассСМножествомТипов)); + + string requestJsonData = класс.ToJson(classDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису. + string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(КлассСМножествомТипов)).Name); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + } + }); + } + + /// + /// Осуществляет проверку того, что при POST запросах, отправляющих простейшие объекты JSON-строкой, происходит корректная вставка. + /// + [Fact] + public void PostSimpleObjectTest() + { + ActODataService(args => + { + // Создаем объект данных. + Страна country = new Страна { Название = "Russia" }; + + // Преобразуем объект данных в JSON-строку. + string[] contryPropertiesNames = + { + Information.ExtractPropertyPath<Страна>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Страна>(x => x.Название) + }; + var contryDynamicView = new View(new ViewAttribute("ContryDynamicView", contryPropertiesNames), typeof(Страна)); + + string requestJsonData = country.ToJson(contryDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису. + string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Страна)).Name); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + + // Получим строку с ответом (в ней должна вернуться созданная сущность). + string receivedJsonCountry = response.Content.ReadAsStringAsync().Result.Beautify(); + + // Преобразуем полученный объект в словарь (c приведением типов значений к типам свойств объекта данных). + DataObjectDictionary receivedDictionaryCountry = DataObjectDictionary.Parse(receivedJsonCountry, contryDynamicView, args.Token.Model); + + // Сравним значения полученного и исходного объектов. + Assert.True(receivedDictionaryCountry.HasProperty(Information.ExtractPropertyPath<Страна>(x => x.__PrimaryKey))); + Assert.Equal(country.__PrimaryKey, receivedDictionaryCountry.GetPropertyValue(Information.ExtractPropertyPath<Страна>(x => x.__PrimaryKey))); + + Assert.True(receivedDictionaryCountry.HasProperty(Information.ExtractPropertyPath<Страна>(x => x.Название))); + Assert.Equal(country.Название, receivedDictionaryCountry.GetPropertyValue(Information.ExtractPropertyPath<Страна>(x => x.Название))); + + // Проверяем что объект данных был корректно создан в базе. + Страна createdCountry = new Страна { __PrimaryKey = country.__PrimaryKey }; + args.DataService.LoadObject(contryDynamicView, createdCountry); + + Assert.Equal(country.Название, createdCountry.Название); + } + }); + } + + /// + /// Осуществляет проверку частичного обновления данных (передаются только значения модифицированных атрибутов) + /// для простейшего объекта, т.е. мастера и детейлы не заданы и не модифицируются. + /// Объект с изменениями передается JSON-строкой. + /// + [Fact] + public void PatchSimpleObjectTest() + { + ActODataService(args => + { + // Создаем объект данных, который потом будем обновлять, и добавляем в базу обычным сервисом данных. + Лес лес = new Лес { Название = "Чаща", Площадь = 100 }; + args.DataService.UpdateObject(лес); + + // Обновляем часть атрибутов. + лес.Площадь = 150; + + // Представление, по которому будем обновлять. + string[] медвPropertiesNames = + { + Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лес>(x => x.Площадь) + }; + var лесDynamicView = new View(new ViewAttribute("лесDynamicView", медвPropertiesNames), typeof(Лес)); + + // Преобразуем объект данных в JSON-строку. + string requestJsonData = лес.ToJson(лесDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Лес)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)лес.__PrimaryKey).Guid.ToString()); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. + Лес updatedЛес = new Лес { __PrimaryKey = лес.__PrimaryKey }; + args.DataService.LoadObject(updatedЛес); + + Assert.Equal(лес.Площадь, updatedЛес.Площадь); + Assert.Equal(лес.Название, updatedЛес.Название); + } + }); + } + + /// + /// Осуществляет проверку частичного обновления данных (передаются только значения модифицированных атрибутов) + /// для мастера в детейле. + /// По стандарту сервер OData не должен обрабатывать такой запрос и поэтому вернёт HTTP Код 400. + /// Объект с изменениями передается JSON-строкой. + /// + [Fact] + public void PatchComplexObjectTest() + { + ActODataService(args => + { + // Объекты для тестирования обновления. + Медведь медв = new Медведь { Вес = 48 }; + Лес лес1 = new Лес { Название = "Бор" }; + Лес лес2 = new Лес { Название = "Березовая роща" }; + медв.ЛесОбитания = лес1; + var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; + var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; + медв.Берлога.Add(берлога1); + медв.Берлога.Add(берлога2); + + var objs = new DataObject[] { медв, лес1, лес2, берлога1, берлога2 }; + + args.DataService.UpdateObjects(ref objs); + + // Преобразуем объект данных в JSON-строку. + string[] медвPropertiesNames = + { + Information.ExtractPropertyPath<Медведь>(x => x.__PrimaryKey), + }; + var медвDynamicView = new View(new ViewAttribute("медвDynamicView", медвPropertiesNames), typeof(Медведь)); + + string[] берлогаPropertiesNames = + { + Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Берлога>(x => x.ЛесРасположения), + }; + var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); + + медвDynamicView.AddDetailInView(Information.ExtractPropertyPath<Медведь>(x => x.Берлога), берлогаDynamicView, true); + + Медведь медвДляЗапроса = new Медведь { __PrimaryKey = медв.__PrimaryKey }; + Берлога берлогаДляЗапроса = new Берлога { __PrimaryKey = берлога1.__PrimaryKey, ЛесРасположения = лес2 }; + медвДляЗапроса.Берлога.Add(берлогаДляЗапроса); + + string requestJsonData = медвДляЗапроса.ToJson(медвDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)медв.__PrimaryKey).Guid.ToString()); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + }); + } + + /// + /// Осуществляет проверку удаления данных. + /// + [Fact] + public void DeleteObjectTest() + { + ActODataService(args => + { + // ------------------ Удаление простого объекта с ключом __PrimaryKey в виде строки ----------------------------- + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + var класс = new КлассСоСтроковымКлючом(); + args.DataService.UpdateObject(класс); + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}('{1}')", args.Token.Model.GetEdmEntitySet(typeof(КлассСоСтроковымКлючом)).Name, класс.__PrimaryKey); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + bool exists = true; + КлассСоСтроковымКлючом deletedКлассСоСтроковымКлючом = new КлассСоСтроковымКлючом { __PrimaryKey = класс.__PrimaryKey }; + try + { + args.DataService.LoadObject(deletedКлассСоСтроковымКлючом); + } + catch (Exception ex) + { + if (ex is CantFindDataObjectException) + exists = false; + } + + Assert.False(exists); + } + + // ------------------ Удаление простого объекта ----------------------------- + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + Медведь медв = new Медведь { Пол = tПол.Мужской, Вес = 80, ПорядковыйНомер = 1 }; + args.DataService.UpdateObject(медв); + + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)медв.__PrimaryKey).Guid.ToString()); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + bool exists = true; + Медведь deletedМедв = new Медведь { __PrimaryKey = медв.__PrimaryKey }; + try + { + args.DataService.LoadObject(deletedМедв); + } + catch (Exception ex) + { + if (ex is CantFindDataObjectException) + exists = false; + } + + Assert.False(exists); + } + + // ------------------ Удаление детейла и объекта с детейлами ----------------------------- + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + медв = new Медведь { Пол = tПол.Мужской, Вес = 80, ПорядковыйНомер = 1 }; + медв.Берлога.Add(new Берлога { Наименование = "Берлога для хорошего настроения" }); + медв.Берлога.Add(new Берлога { Наименование = "Берлога для плохого настроения" }); + Берлога delБерлога = new Берлога { Наименование = "Отдельно удаляемая берлога" }; + медв.Берлога.Add(delБерлога); + args.DataService.UpdateObject(медв); + + // Проверяем что до вызова удалений в базе есть все детейлы. + var ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; + LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), Берлога.Views.БерлогаE); + lcs.LoadingTypes = new[] { typeof(Берлога) }; + ICSSoft.STORMNET.DataObject[] dobjs = args.DataService.LoadObjects(lcs); + + Assert.Equal(3, dobjs.Length); + + // Формируем URL запроса к OData-сервису для удаления объекта-детейла (с идентификатором удаляемой сущности). + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Берлога)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)delБерлога.__PrimaryKey).Guid.ToString()); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект-детейл был удален из базы. + bool exists = true; + Берлога deletedБерлога = new Берлога { __PrimaryKey = delБерлога.__PrimaryKey }; + try + { + args.DataService.LoadObject(deletedБерлога); + } + catch (Exception ex) + { + if (ex is CantFindDataObjectException) + exists = false; + } + + Assert.False(exists); + + // Проверяем что объект-агрегатор остался в базе. + exists = true; + Медведь deletedМедв = new Медведь { __PrimaryKey = медв.__PrimaryKey }; + try + { + args.DataService.LoadObject(deletedМедв); + } + catch (Exception ex) + { + if (ex is CantFindDataObjectException) + exists = false; + } + + Assert.True(exists); + + // Проверяем что детейлов объекта в базе осталось на 1 меньше, чем создавали. + dobjs = args.DataService.LoadObjects(lcs); + + Assert.Equal(2, dobjs.Length); + } + + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)медв.__PrimaryKey).Guid.ToString()); + + // Обращаемся к OData-сервису для удаления объекта с детейлами и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + bool exists = true; + Медведь deletedМедв = new Медведь { __PrimaryKey = медв.__PrimaryKey }; + try + { + args.DataService.LoadObject(deletedМедв); + } + catch (Exception ex) + { + if (ex is CantFindDataObjectException) + exists = false; + } + + Assert.False(exists); + + // Проверяем что детейлов объекта в базе не осталось. + dobjs = args.DataService.LoadObjects(lcs); + + Assert.Equal(0, dobjs.Length); + } + }); + } + + /// + /// Осуществляет проверку обновления мастера с иерархическими детейлами. + /// Мастер и детейлы заданы и модифицируются. + /// Объект с изменениями передается JSON-строкой. + /// + [Fact] + public void UpdateCicleDeteilTest() + { + ActODataService(args => + { + // Мастер тестирования обновления. + TestMaster testMaster1 = new TestMaster { TestMasterName = "TestMasterName" }; + var objs = new DataObject[] { testMaster1 }; + args.DataService.UpdateObjects(ref objs); + + // Колличество создаваемых детейлов. + int deteilCount = 20; + + // Детейлы тестирования обновления. + TestDetailWithCicle[] testDetailWithCicleArray = new TestDetailWithCicle[deteilCount]; + TestDetailWithCicle testDetailWithCicle = null; + + for (int i = 0; i < deteilCount; i++) + { + if (i == 0) + { + testDetailWithCicle = new TestDetailWithCicle { TestDetailName = "TestDeteilName0", TestMaster = testMaster1 }; + } + else + { + testDetailWithCicle = new TestDetailWithCicle { TestDetailName = "TestDeteilName" + i.ToString(), TestMaster = testMaster1, Parent = testDetailWithCicle }; + } + + testDetailWithCicleArray[i] = testDetailWithCicle; + objs = new DataObject[] { testDetailWithCicle }; + args.DataService.UpdateObjects(ref objs); + } + + // Обновляем атрибут мастера. + testMaster1.TestMasterName = "TestMasterNameUpdate"; + + // Представление, по которому будем обновлять. + string[] testMasterPropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.TestMasterName) + }; + var testMasterDynamicView = new View(new ViewAttribute("testMasterDynamicView", testMasterPropertiesNames), typeof(TestMaster)); + + // Преобразуем объект данных в JSON-строку. + string requestJsonData = testMaster1.ToJson(testMasterDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(TestMaster)).Name, ((ICSSoft.STORMNET.KeyGen.KeyGuid)testMaster1.__PrimaryKey).Guid.ToString()); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. + TestMaster updatedTestMaster = new TestMaster { __PrimaryKey = testMaster1.__PrimaryKey }; + args.DataService.LoadObject(updatedTestMaster); + + Assert.Equal(testMaster1.TestMasterName, updatedTestMaster.TestMasterName); + } + + // Обновление атрибутов Детейлов. + for (int i = 0; i < deteilCount; i++) + { + testDetailWithCicleArray[i].TestDetailName += "Update"; + } + + // Представление, по которому будем обновлять. + string[] testDetailWithCiclePropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.TestDetailName) + }; + + var testDetailWithCicleDynamicView = new View(new ViewAttribute("testDetailWithCicleDynamicView", testDetailWithCiclePropertiesNames), typeof(TestDetailWithCicle)); + + for (int i = 0; i < deteilCount; i++) + { + // Преобразуем объект данных в JSON-строку. + string requestJsonDatatestDetailWithCicle = testDetailWithCicleArray[i].ToJson(testDetailWithCicleDynamicView, args.Token.Model); + DataObjectDictionary objJson = DataObjectDictionary.Parse(requestJsonDatatestDetailWithCicle, testDetailWithCicleDynamicView, args.Token.Model); + + objJson.Add("TestMaster@odata.bind", string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(TestMaster)).Name, + ((KeyGuid)testMaster1.__PrimaryKey).Guid.ToString("D"))); + + if (i != 0) + { + objJson.Add("Parent@odata.bind", string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(TestDetailWithCicle)).Name, + ((KeyGuid)testDetailWithCicleArray[i - 1].__PrimaryKey).Guid.ToString("D"))); + } + + requestJsonDatatestDetailWithCicle = objJson.Serialize(); + + // Формируем URL запроса к OData-сервису. + requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(TestDetailWithCicle)).Name, ((KeyGuid)testDetailWithCicleArray[i].__PrimaryKey).Guid.ToString()); + + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonDatatestDetailWithCicle).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. + TestDetailWithCicle updatedTestDetailWithCicle = new TestDetailWithCicle { __PrimaryKey = testDetailWithCicleArray[i].__PrimaryKey }; + args.DataService.LoadObject(updatedTestDetailWithCicle); + + Assert.Equal(testDetailWithCicleArray[i].TestDetailName, updatedTestDetailWithCicle.TestDetailName); + } + } + }); + } + + /// + /// Test save details with inheritance. + /// + [Fact] + public void SaveDetailWithInheritanceTest() + { + ActODataService(args => + { + var базовыйКласс = new БазовыйКласс() { Свойство1 = "sv1" }; + var детейл = new ДетейлНаследник() { prop1 = 1 }; + базовыйКласс.Детейл.Add(детейл); + + args.DataService.UpdateObject(базовыйКласс); + int newValue = 2; + детейл.prop1 = newValue; + + const string baseUrl = "http://localhost/odata"; + + string detJson = детейл.ToJson(ДетейлНаследник.Views.ДетейлНаследникE, args.Token.Model); + detJson = detJson.Replace(nameof(ДетейлНаследник.БазовыйКласс), $"{nameof(ДетейлНаследник.БазовыйКласс)}@odata.bind"); + detJson = detJson.Replace("{\"__PrimaryKey\":\"", $"\"{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}("); + detJson = detJson.Replace("\"}", ")\""); + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}", + "{}", + базовыйКласс), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(ДетейлНаследник)).Name}", + detJson, + детейл), + }; + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); + + args.DataService.LoadObject(БазовыйКласс.Views.БазовыйКлассE, базовыйКласс); + + var детейлы = базовыйКласс.Детейл.Cast<ДетейлНаследник>(); + + Assert.Equal(1, детейлы.Count()); + Assert.Equal(newValue, детейлы.First().prop1); + } + }); + } + + /// + /// Test update details with Aggregator. + /// + [Fact] + public void UpdateDetailWithAggregatorTest() + { + ActODataService(args => + { + string[] лапаPropertiesNames = + { + Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лапа>(x => x.Размер), + }; + string[] кошкаPropertiesNames = + { + Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Кошка>(x => x.Кличка), + Information.ExtractPropertyPath<Кошка>(x => x.Тип), + Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), + }; + var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); + var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); + + var порода = new Порода() { Название = "Первая" }; + var кошка = new Кошка() { Кличка = "50", Порода = порода, Тип = ТипКошки.Домашняя }; + var лапа = new Лапа() { Размер = 50 }; + кошка.Лапа.Add(лапа); + + args.DataService.UpdateObject(кошка); + + кошка.Кличка = "100"; + кошка.Тип = ТипКошки.Дикая; + лапа.Размер = 100; + + const string baseUrl = "http://localhost/odata"; + + string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); + DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); + + objJsonЛапа.Add( + $"{nameof(Лапа.Кошка)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, + ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataЛапа = objJsonЛапа.Serialize(); + + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name}", + кошка.ToJson(кошкаDynamicView, args.Token.Model), + кошка), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", + requestJsonDataЛапа, + лапа), + }; + + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); + + кошкаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Кошка>(x => x.Лапа), лапаDynamicView, true); + + args.DataService.LoadObject(кошкаDynamicView, кошка); + + var лапы = кошка.Лапа.Cast<Лапа>(); + + Assert.Equal("100", кошка.Кличка); + Assert.Equal(ТипКошки.Дикая, кошка.Тип); + Assert.Equal(1, лапы.Count(б => б.Размер == 100)); + } + }); + } + + /// + /// Test update details with Aggregator. + /// + [Fact] + public void UpdateSecondDetailWithAggregatorTest() + { + ActODataService(args => + { + // Arrange. + DateTime date = new DateTime(2010, 10, 10, 10, 10, 10, DateTimeKind.Local); + var порода = new Порода() { Название = "Первая" }; + var кошка = new Кошка() { Кличка = "50", Порода = порода }; + var лапа = new Лапа() { Размер = 50 }; + кошка.Лапа.Add(лапа); + var перелом = new Перелом() { Дата = DateTime.UtcNow, Тип = ТипПерелома.Открытый }; + лапа.Перелом.Add(перелом); + + args.DataService.UpdateObject(кошка); + + string[] переломPropertiesNames = + { + Information.ExtractPropertyPath<Перелом>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Перелом>(x => x.Дата), + }; + var переломDynamicView = new View(new ViewAttribute("переломDynamicView", переломPropertiesNames), typeof(Перелом)); + + string[] лапаPropertiesNames = + { + Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лапа>(x => x.Размер), + Information.ExtractPropertyPath<Лапа>(x => x.РазмерСтрокой), + }; + var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); + + string[] кошкаPropertiesNames = + { + Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Кошка>(x => x.Кличка), + Information.ExtractPropertyPath<Кошка>(x => x.Тип), + Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), + }; + var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); + + лапа.Размер = 100; + перелом.Дата = date; + + const string baseUrl = "http://localhost/odata"; + + string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); + DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); + + objJsonЛапа.Add( + $"{nameof(Лапа.Кошка)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, + ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataЛапа = objJsonЛапа.Serialize(); + + string requestJsonDataПерелом = перелом.ToJson(переломDynamicView, args.Token.Model); + DataObjectDictionary objJsonПерелом = DataObjectDictionary.Parse(requestJsonDataПерелом, переломDynamicView, args.Token.Model); + + objJsonПерелом.Add( + $"{nameof(Перелом.Лапа)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name, + ((KeyGuid)лапа.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataПерелом = objJsonПерелом.Serialize(); + + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", + requestJsonDataЛапа, + лапа), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Перелом)).Name}", + requestJsonDataПерелом, + перелом), + }; + + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); + + кошкаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Кошка>(x => x.Лапа), лапаDynamicView, true); + лапаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Лапа>(x => x.Перелом), переломDynamicView, true); + + args.DataService.LoadObject(кошкаDynamicView, кошка); + + var лапы = кошка.Лапа.Cast<Лапа>(); + + var переломы = лапы.FirstOrDefault().Перелом.Cast<Перелом>(); + + Assert.Equal("50", кошка.Кличка); + Assert.Equal(1, лапы.Count(б => б.Размер == 100)); + Assert.Equal(1, переломы.Count(б => б.Дата == date.ToUniversalTime())); + } + }); + } + + /// + /// Test delete and add detail. + /// + [Fact] + public void UpdateDeletedAndAddedDetailWithAggregatorTest() + { + ActODataService(args => + { + string[] лапаPropertiesNames = + { + Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лапа>(x => x.Размер), + }; + string[] кошкаPropertiesNames = + { + Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Кошка>(x => x.Кличка), + Information.ExtractPropertyPath<Кошка>(x => x.Тип), + Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), + }; + var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); + var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); + + var порода = new Порода() { Название = "Первая" }; + var кошка = new Кошка() { Кличка = "50", Порода = порода, Тип = ТипКошки.Домашняя }; + var лапа = new Лапа() { Размер = 50 }; + var лапа2 = new Лапа() { Размер = 1000 }; + var лапа3 = new Лапа() { Размер = 2000 }; + кошка.Лапа.Add(лапа); + кошка.Лапа.Add(лапа2); + + args.DataService.UpdateObject(кошка); + + кошка.Кличка = "100"; + кошка.Тип = ТипКошки.Дикая; + лапа.Размер = 100; + + const string baseUrl = "http://localhost/odata"; + + string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); + DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); + + objJsonЛапа.Add( + $"{nameof(Лапа.Кошка)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, + ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataЛапа = objJsonЛапа.Serialize(); + + лапа2.SetStatus(ObjectStatus.Deleted); + + string requestJsonDataЛапа3 = лапа3.ToJson(лапаDynamicView, args.Token.Model); + DataObjectDictionary objJsonЛапа3 = DataObjectDictionary.Parse(requestJsonDataЛапа3, лапаDynamicView, args.Token.Model); + + objJsonЛапа3.Add( + $"{nameof(Лапа.Кошка)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, + ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataЛапа3 = objJsonЛапа3.Serialize(); + + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", + string.Empty, + лапа2), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", + requestJsonDataЛапа3, + лапа3), + }; + + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.NoContent, HttpStatusCode.Created }); + + кошкаDynamicView.AddDetailInView(Information.ExtractPropertyPath<Кошка>(x => x.Лапа), лапаDynamicView, true); + + args.DataService.LoadObject(кошкаDynamicView, кошка); + + var лапы = кошка.Лапа.Cast<Лапа>(); + + Assert.Equal(2, лапы.Count()); + Assert.Equal(1, лапы.Count(x => x.Размер == 2000)); + Assert.Equal(0, лапы.Count(x => x.Размер == 1000)); + } + }); + } + + /// + /// Test batch update error handling when business server throws exception. + /// + [Fact] + public void BatchUpdateErrorHandlingTest() + { + ActODataService(args => + { + string[] лапаPropertiesNames = + { + Information.ExtractPropertyPath<Лапа>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Лапа>(x => x.Размер), + }; + string[] кошкаPropertiesNames = + { + Information.ExtractPropertyPath<Кошка>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Кошка>(x => x.Кличка), + Information.ExtractPropertyPath<Кошка>(x => x.Тип), + Information.ExtractPropertyPath<Кошка>(x => x.КошкаСтрокой), + }; + var лапаDynamicView = new View(new ViewAttribute("лапаDynamicView", лапаPropertiesNames), typeof(Лапа)); + var кошкаDynamicView = new View(new ViewAttribute("кошкаDynamicView", кошкаPropertiesNames), typeof(Кошка)); + + var порода = new Порода() { Название = "Первая" }; + var кошка = new Кошка() { Кличка = "50", Порода = порода, Тип = ТипКошки.Домашняя }; + var лапа = new Лапа() { Размер = 50 }; + кошка.Лапа.Add(лапа); + + args.DataService.UpdateObject(кошка); + + кошка.Кличка = "100"; + кошка.Тип = ТипКошки.Дикая; + + // Этот размер лапы указан в CatsBS как недопустимый размер, будет сгенерировано исключение. + лапа.Размер = 100899; + + const string baseUrl = "http://localhost/odata"; + + string requestJsonDataЛапа = лапа.ToJson(лапаDynamicView, args.Token.Model); + DataObjectDictionary objJsonЛапа = DataObjectDictionary.Parse(requestJsonDataЛапа, лапаDynamicView, args.Token.Model); + + objJsonЛапа.Add( + $"{nameof(Лапа.Кошка)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name, + ((KeyGuid)кошка.__PrimaryKey).Guid.ToString("D"))); + + requestJsonDataЛапа = objJsonЛапа.Serialize(); + + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Кошка)).Name}", + кошка.ToJson(кошкаDynamicView, args.Token.Model), + кошка), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Лапа)).Name}", + requestJsonDataЛапа, + лапа), + }; + + int exceptionHandled = 0; + + args.Token.Events.CallbackAfterInternalServerError = (Exception exception, ref HttpStatusCode code) => + { + Exception currentException = exception; + + while (currentException != null) + { + if (currentException.Message == "Недопустимый размер кошачьей лапы!") + { + exceptionHandled++; + } + + currentException = currentException.InnerException; + } + + return exception; + }; + + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); + Assert.Equal(1, exceptionHandled); + } + }); + } + + /// + /// Test update agregator with inheritance details. + /// + [Fact] + public void UpdateAgregatorWithInheritanceDetailsTest() + { + ActODataService(args => + { + var son = new Son() { Name = "Yakov", SuspendersColor = "Brown" }; + var daughter = new Daughter() { Name = "Yana", DressColor = "Red" }; + var person = new Person() { Name = "Yan" }; + person.Childrens.AddRange(son, daughter); + + args.DataService.UpdateObject(person); + + person.Name = "Yan Yakovlevich"; + + // Преобразуем объект данных в JSON-строку. + string[] personPropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + Information.ExtractPropertyPath(x => x.Name) + }; + + var personDynamicView = new View(new ViewAttribute("personDynamicView", personPropertiesNames), typeof(Person)); + + string requestJsonData = person.ToJson(personDynamicView, args.Token.Model); + + // Формируем URL запроса к OData-сервису. + string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Person)).Name); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно. + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + } + }); + } + + /// + /// Test batch update detail of detail. + /// + [Fact] + public void UpdateDetailOfDetailTest() + { + ActODataService(args => + { + var базовыйКласс = new БазовыйКласс() { Свойство1 = "sv1" }; + var детейл = new Детейл() { prop1 = 1 }; + базовыйКласс.Детейл.Add(детейл); + var детейл2 = new Детейл2() { prop2 = "2" }; + детейл.Детейл2.Add(детейл2); + + args.DataService.UpdateObject(базовыйКласс); + string newValue = "new"; + базовыйКласс.Свойство1 = newValue; + детейл2.prop2 = newValue; + + const string baseUrl = "http://localhost/odata"; + + string[] classPropertiesNames = + { + Information.ExtractPropertyPath<БазовыйКласс>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<БазовыйКласс>(x => x.Свойство1), + }; + + string[] detail2PropertiesNames = + { + Information.ExtractPropertyPath<Детейл2>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Детейл2>(x => x.prop2), + }; + + var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(БазовыйКласс)); + var detail2DynamicView = new View(new ViewAttribute("detailDynamicView", detail2PropertiesNames), typeof(Детейл2)); + + string classJson = базовыйКласс.ToJson(classDynamicView, args.Token.Model); + string detJson = детейл2.ToJson(detail2DynamicView, args.Token.Model); + + DataObjectDictionary objJson = DataObjectDictionary.Parse(detJson, detail2DynamicView, args.Token.Model); + + objJson.Add( + $"{nameof(Детейл2.Детейл)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Детейл)).Name, + ((KeyGuid)детейл.__PrimaryKey).Guid.ToString("D"))); + + detJson = objJson.Serialize(); + + detail2DynamicView.AddProperty(Information.ExtractPropertyPath<Детейл2>(x => x.Детейл)); + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}", + classJson, + базовыйКласс), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Детейл2)).Name}", + detJson, + детейл2), + }; + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); + + args.DataService.LoadObject(detail2DynamicView, детейл2); + + Assert.Equal(newValue, детейл2.prop2); + } + }); + } + + /// + /// Test batch update detail of detail. + /// + [Fact] + public void UpdateDetailOfDetailDescOrderTest() + { + ActODataService(args => + { + var базовыйКласс = new БазовыйКласс() { Свойство1 = "sv1" }; + var детейл = new Детейл() { prop1 = 1 }; + базовыйКласс.Детейл.Add(детейл); + var детейл2 = new Детейл2() { prop2 = "2" }; + детейл.Детейл2.Add(детейл2); + + args.DataService.UpdateObject(базовыйКласс); + string newValue = "new"; + базовыйКласс.Свойство1 = newValue; + детейл2.prop2 = newValue; + + const string baseUrl = "http://localhost/odata"; + + string[] classPropertiesNames = + { + Information.ExtractPropertyPath<БазовыйКласс>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<БазовыйКласс>(x => x.Свойство1), + }; + + string[] detail2PropertiesNames = + { + Information.ExtractPropertyPath<Детейл2>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Детейл2>(x => x.prop2), + }; + + var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(БазовыйКласс)); + var detail2DynamicView = new View(new ViewAttribute("detailDynamicView", detail2PropertiesNames), typeof(Детейл2)); + + string classJson = базовыйКласс.ToJson(classDynamicView, args.Token.Model); + string detJson = детейл2.ToJson(detail2DynamicView, args.Token.Model); + + DataObjectDictionary objJson = DataObjectDictionary.Parse(detJson, detail2DynamicView, args.Token.Model); + + objJson.Add( + $"{nameof(Детейл2.Детейл)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Детейл)).Name, + ((KeyGuid)детейл.__PrimaryKey).Guid.ToString("D"))); + + detJson = objJson.Serialize(); + + detail2DynamicView.AddProperty(Information.ExtractPropertyPath<Детейл2>(x => x.Детейл)); + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Детейл2)).Name}", + detJson, + детейл2), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(БазовыйКласс)).Name}", + classJson, + базовыйКласс), + }; + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK }); + + args.DataService.LoadObject(detail2DynamicView, детейл2); + + Assert.Equal(newValue, детейл2.prop2); + } + }); + } + + /// + /// Test batch update detail and another type detail. + /// + [Fact] + public void UpdateDetailAndDetailTest() + { + ActODataService(args => + { + var базовыйКласс = new Библиотека() { Адрес = "ул. Пушкина" }; + var мастер = new Автор() { Имя = "Александр" }; + var детейл1 = new Книга() { Название = "Му-Му", Автор1 = мастер }; + базовыйКласс.Книга.Add(детейл1); + var детейл2 = new Журнал() { Номер = 2, Автор2 = мастер }; + базовыйКласс.Журнал.Add(детейл2); + + args.DataService.UpdateObject(базовыйКласс); + string newValue = "ул. Лермонтова"; + int newIntValue = 3; + базовыйКласс.Адрес = newValue; + детейл1.Название = newValue; + детейл2.Номер = newIntValue; + + const string baseUrl = "http://localhost/odata"; + + string[] classPropertiesNames = + { + Information.ExtractPropertyPath<Библиотека>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Библиотека>(x => x.Адрес), + }; + + string[] detail1PropertiesNames = + { + Information.ExtractPropertyPath<Книга>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Книга>(x => x.Название), + }; + + string[] detail2PropertiesNames = + { + Information.ExtractPropertyPath<Журнал>(x => x.__PrimaryKey), + Information.ExtractPropertyPath<Журнал>(x => x.Номер), + }; + + var classDynamicView = new View(new ViewAttribute("classDynamicView", classPropertiesNames), typeof(Библиотека)); + var detail1DynamicView = new View(new ViewAttribute("detailDynamicView", detail1PropertiesNames), typeof(Книга)); + var detail2DynamicView = new View(new ViewAttribute("detailDynamicView", detail2PropertiesNames), typeof(Журнал)); + + string classJson = базовыйКласс.ToJson(classDynamicView, args.Token.Model); + string det1Json = детейл1.ToJson(detail1DynamicView, args.Token.Model); + string det2Json = детейл2.ToJson(detail2DynamicView, args.Token.Model); + + DataObjectDictionary obj1Json = DataObjectDictionary.Parse(det1Json, detail1DynamicView, args.Token.Model); + + obj1Json.Add( + $"{nameof(Книга.Библиотека1)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Библиотека)).Name, + ((KeyGuid)базовыйКласс.__PrimaryKey).Guid.ToString("D"))); + + det1Json = obj1Json.Serialize(); + + DataObjectDictionary obj2Json = DataObjectDictionary.Parse(det2Json, detail2DynamicView, args.Token.Model); + + obj2Json.Add( + $"{nameof(Журнал.Библиотека2)}@odata.bind", + string.Format( + "{0}({1})", + args.Token.Model.GetEdmEntitySet(typeof(Библиотека)).Name, + ((KeyGuid)базовыйКласс.__PrimaryKey).Guid.ToString("D"))); + + det2Json = obj2Json.Serialize(); + + string[] changesets = new[] + { + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Библиотека)).Name}", + classJson, + базовыйКласс), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Книга)).Name}", + det1Json, + детейл1), + CreateChangeset( + $"{baseUrl}/{args.Token.Model.GetEdmEntitySet(typeof(Журнал)).Name}", + det2Json, + детейл2), + }; + HttpRequestMessage batchRequest = CreateBatchRequest(baseUrl, changesets); + using (HttpResponseMessage response = args.HttpClient.SendAsync(batchRequest).Result) + { + CheckODataBatchResponseStatusCode(response, new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.OK, HttpStatusCode.OK }); + + classDynamicView.AddDetailInView(nameof(Библиотека.Книга), detail1DynamicView, true); + classDynamicView.AddDetailInView(nameof(Библиотека.Журнал), detail2DynamicView, true); + + args.DataService.LoadObject(classDynamicView, базовыйКласс); + + Assert.Equal(newValue, базовыйКласс.Адрес = newValue); + Assert.Equal(newValue, базовыйКласс.Книга[0].Название); + Assert.Equal(newIntValue, базовыйКласс.Журнал[0].Номер); + + } + }); + } + + /// + /// Осуществляет проверку удаления данных. + /// + [Fact] + public void DeletePlainObjectTest() + { + ActODataService(args => + { + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + Медведь agregator = new Медведь() { МедведьСтрокой = "Agregator" }; + args.DataService.UpdateObject(agregator); + + View view = new View(typeof(Медведь), View.ReadType.OnlyThatObject); + Медведь foundAgregator0 = args.DataService.Query<Медведь>(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.NotNull(foundAgregator0); + + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name, agregator.__PrimaryKey); + requestUrl = requestUrl.Replace("{", string.Empty).Replace("}", string.Empty); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + Медведь foundAgregator = args.DataService.Query<Медведь>(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.Null(foundAgregator); + } + }); + } + + /// + /// Осуществляет проверку удаления данных, если детейл и мастер одного типа, но при этом пустые. + /// + [Fact] + public void DeleteObjectWithSameDetailAndMasterEmptyTest() + { + ActODataService(args => + { + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + AgregatorSameMD agregator = new AgregatorSameMD() { Name = "Agregator" }; + args.DataService.UpdateObject(agregator); + + View view = new View(typeof(AgregatorSameMD), View.ReadType.OnlyThatObject); + AgregatorSameMD foundAgregator0 = args.DataService.Query(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.NotNull(foundAgregator0); + + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(AgregatorSameMD)).Name, agregator.__PrimaryKey); + requestUrl = requestUrl.Replace("{", string.Empty).Replace("}", string.Empty); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + AgregatorSameMD foundAgregator = args.DataService.Query(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.Null(foundAgregator); + } + }); + } + + /// + /// Осуществляет проверку удаления данных, если детейл и мастер одного типа? но лишь детейл заполнен. + /// + [Fact] + public void DeleteObjectWithSameDetailAndMasterTest() + { + ActODataService(args => + { + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + AgregatorSameMD agregator = new AgregatorSameMD() { Name = "Agregator" }; + args.DataService.UpdateObject(agregator); + + DetailAndMaster dm = new DetailAndMaster() { Name = "DetailAndMaster" }; + agregator.Details.Add(dm); + args.DataService.UpdateObject(dm); + + AgregatorSameMD agregator2 = new AgregatorSameMD() { Name = "Agregator2" }; + args.DataService.UpdateObject(agregator2); + DetailAndMaster dm2 = new DetailAndMaster() { Name = "DetailAndMaster2" }; + agregator2.Details.Add(dm2); + args.DataService.UpdateObject(dm2); + + View view = new View(typeof(AgregatorSameMD), View.ReadType.OnlyThatObject); + AgregatorSameMD foundAgregator0 = args.DataService.Query(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.NotNull(foundAgregator0); + + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(AgregatorSameMD)).Name, agregator.__PrimaryKey); + requestUrl = requestUrl.Replace("{", string.Empty).Replace("}", string.Empty); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + AgregatorSameMD foundAgregator = args.DataService.Query(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.Null(foundAgregator); + } + }); + } + + /// + /// Осуществляет проверку удаления данных, если детейл и мастер одного типа, но не пустые. + /// + [Fact] + public void DeleteObjectWithSameDetailAndMaster2Test() + { + ActODataService(args => + { + // Создаем объект данных, который потом будем удалять, и добавляем в базу обычным сервисом данных. + AgregatorSameMD agregator = new AgregatorSameMD() { Name = "Agregator" }; + args.DataService.UpdateObject(agregator); + + DetailAndMaster dm = new DetailAndMaster() { Name = "DetailAndMaster" }; + agregator.Details.Add(dm); + args.DataService.UpdateObject(dm); + + AgregatorSameMD agregator2 = new AgregatorSameMD() { Name = "Agregator2" }; + args.DataService.UpdateObject(agregator2); + DetailAndMaster dm2 = new DetailAndMaster() { Name = "DetailAndMaster2" }; + agregator2.Details.Add(dm2); + args.DataService.UpdateObject(dm2); + + agregator.Master = dm2; + args.DataService.UpdateObject(agregator); + + View view = new View(typeof(AgregatorSameMD), View.ReadType.OnlyThatObject); + AgregatorSameMD foundAgregator0 = args.DataService.Query(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.NotNull(foundAgregator0); + + // Формируем URL запроса к OData-сервису (с идентификатором удаляемой сущности). + string requestUrl = string.Format("http://localhost/odata/{0}({1})", args.Token.Model.GetEdmEntitySet(typeof(AgregatorSameMD)).Name, agregator.__PrimaryKey); + requestUrl = requestUrl.Replace("{", string.Empty).Replace("}", string.Empty); + + // Обращаемся к OData-сервису и обрабатываем ответ. + using (HttpResponseMessage response = args.HttpClient.DeleteAsync(requestUrl).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок удаления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был удален из базы. + AgregatorSameMD foundAgregator = args.DataService.Query(view).FirstOrDefault(x => x.__PrimaryKey == agregator.__PrimaryKey); + Assert.Null(foundAgregator); + } + }); + } + + /// + /// Тест на изменение ссылки. + /// + [Fact] + public void MasterChangeTest() + { + ActODataService(args => + { + // Создаем объект данных, который потом будем обновлять, и добавляем в базу обычным сервисом данных. + Страна страна1 = new Страна { Название = "Страна1" }; + Страна страна2 = new Страна { Название = "Россия" }; + args.DataService.UpdateObject(страна1); + args.DataService.UpdateObject(страна2); + + Лес лес = new Лес { Название = "Тайга", Площадь = 2000, Страна = страна1 }; + args.DataService.UpdateObject(лес); + + // Обновляем ссылку. + лес.Страна = страна2; + + // Представление, по которому будем обновлять. + string[] лесPropertiesNames = + { + Information.ExtractPropertyPath<Лес>(x => x.__PrimaryKey), + }; + var лесDynamicView = new View(new ViewAttribute("лесDynamicView", лесPropertiesNames), typeof(Лес)); + + // Преобразуем объект данных в JSON-строку. + string requestJsonDataЛес = лес.ToJson(лесDynamicView, args.Token.Model); + + // Добавляем в payload информацию, что поменяли ссылку на страну. + var requestJsonData = ODataTestHelper.AddEntryRelationship(requestJsonDataЛес, лесDynamicView, args.Token.Model, страна2, nameof(Лес.Страна)); + + // Получаем адрес для PATCH запроса. + var requestUrl = ODataTestHelper.GetRequestUrl(args.Token.Model, лес); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. + Лес updatedЛес = new Лес { __PrimaryKey = лес.__PrimaryKey }; + args.DataService.LoadObject(updatedЛес); + + Assert.Equal(лес.Страна.__PrimaryKey.ToString(), updatedЛес.Страна.__PrimaryKey.ToString()); + } + }); + } + + /// + /// Тест на изменение агрегатора у детейла. + /// + [Fact] + public void AggregatorChangeTest() + { + ActODataService(args => + { + // Создаем объекты данных, которые потом будем обновлять, и добавляем в базу обычным сервисом данных. + Медведь медведь1 = new Медведь { ПорядковыйНомер = 1 }; + Медведь медведь2 = new Медведь { ПорядковыйНомер = 2 }; + args.DataService.UpdateObject(медведь1); + args.DataService.UpdateObject(медведь2); + + Берлога берлога1 = new Берлога { Наименование = "Берлога1", Медведь = медведь1 }; + Берлога берлога2 = new Берлога { Наименование = "Берлога2", Медведь = медведь1 }; + Берлога берлога3 = new Берлога { Наименование = "Берлога3", Медведь = медведь1 }; + args.DataService.UpdateObject(берлога1); + args.DataService.UpdateObject(берлога2); + args.DataService.UpdateObject(берлога3); + + // Обновляем ссылку. + берлога1.Медведь = медведь2; + + // Представление, по которому будем обновлять. + string[] берлогаPropertiesNames = + { + Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), + }; + var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); + + // Преобразуем объект данных в JSON-строку. + string requestJsonData = берлога1.ToJson(берлогаDynamicView, args.Token.Model); + + // Добавляем в payload информацию, что поменяли ссылку на медведя. + requestJsonData = ODataTestHelper.AddEntryRelationship(requestJsonData, берлогаDynamicView, args.Token.Model, медведь2, nameof(Берлога.Медведь)); + + // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). + var requestUrl = ODataTestHelper.GetRequestUrl(args.Token.Model, берлога1); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. + Берлога updatedБерлога = new Берлога { __PrimaryKey = берлога1.__PrimaryKey }; + args.DataService.LoadObject(updatedБерлога); + + Assert.Equal(берлога1.Медведь.__PrimaryKey.ToString(), updatedБерлога.Медведь.__PrimaryKey.ToString()); + } + }); + } + + /// + /// Проверка изменения сложного агрегатора (у которого есть ещё ссылки на другие мастера). + /// + [Fact] + public void ComplexAggregatorChangeTest() + { + ActODataService(args => + { + LegoDevice device1 = new LegoDevice { BlockId = 1, Name = "First" }; + LegoDevice device2 = new LegoDevice { BlockId = 2, Name = "Second" }; + LegoDevice device3 = new LegoDevice { BlockId = 3, Name = "Third" }; + args.DataService.UpdateObject(device1); + args.DataService.UpdateObject(device2); + args.DataService.UpdateObject(device3); + + // Создаем объекты данных, которые потом будем обновлять, и добавляем в базу обычным сервисом данных. + LegoPatent patent = new LegoPatent { Description = "Patent A", BaseLegoBlock = device1, Date = DateTime.Now }; + args.DataService.UpdateObject(patent); + + // Обновляем ссылку на агрегатора. + patent.BaseLegoBlock = device2; + + // Представление, по которому будем обновлять. + string[] patentPropertiesNames = + { + Information.ExtractPropertyPath(x => x.__PrimaryKey), + }; + var patentDynamicView = new View(new ViewAttribute("patentDynamicView", patentPropertiesNames), typeof(LegoPatent)); + + // Преобразуем объект данных в JSON-строку. + string requestJsonData = patent.ToJson(patentDynamicView, args.Token.Model); + + // Добавляем в payload информацию, что поменяли ссылку на агрегатора. + requestJsonData = ODataTestHelper.AddEntryRelationship(requestJsonData, patentDynamicView, args.Token.Model, device2, nameof(LegoPatent.BaseLegoBlock)); + + // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). + var requestUrl = ODataTestHelper.GetRequestUrl(args.Token.Model, patent); + + // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем обновляемый объект в формате JSON. + using (HttpResponseMessage response = args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData).Result) + { + // Убедимся, что запрос завершился успешно (тело ответа д.б. пустым при отсутствии ошибок обновления). + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + + // Проверяем что объект данных был обновлен в базе, причем только по переданным атрибутам. + LegoPatent updatedLegoPatent = new LegoPatent { __PrimaryKey = patent.__PrimaryKey }; + args.DataService.LoadObject(updatedLegoPatent); + + Assert.Equal(patent.BaseLegoBlock.__PrimaryKey.ToString(), updatedLegoPatent.BaseLegoBlock.__PrimaryKey.ToString()); + } + }); + } + } +} diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/UpdateViewsTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/UpdateViewsTest.cs new file mode 100644 index 00000000..b7a9f6ec --- /dev/null +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/UpdateViewsTest.cs @@ -0,0 +1,78 @@ +#if NETCOREAPP +namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD.Update +{ + using System; + using System.Net; + using System.Net.Http; + + using ICSSoft.STORMNET; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Helpers; + + using Xunit; + using Xunit.Abstractions; + + /// + /// Тесты для проверки работы UpdateViews - представлений, которые используются вместо представления по умолчанию при обновлении объекта через OData. + /// Для запуска OData backend используется модифицированная версия Startup - , которая задаёт UpdateView для Берлоги и Медведя. + /// + public class UpdateViewsTest : BaseODataServiceIntegratedTest + { + /// + /// Конструктор по-умолчанию. + /// + /// Фабрика для приложения. + /// Вывод диагностической информации по тестам. + public UpdateViewsTest(CustomWebApplicationFactory factory, ITestOutputHelper output) + : base(factory, output) + { + + } + + /// + /// Проверка работы UpdateView - случай, когда в UpdateView не включен мастер. + /// + [Fact] + public void UpdateViewNoMastersTest() + { + ActODataService(args => + { + // Создаем объекты данных, которые потом будем обновлять, и добавляем в базу обычным сервисом данных. + Медведь медведь1 = new Медведь { ПорядковыйНомер = 1 }; + Медведь медведь2 = new Медведь { ПорядковыйНомер = 2 }; + args.DataService.UpdateObject(медведь1); + args.DataService.UpdateObject(медведь2); + + Берлога берлога1 = new Берлога { Наименование = "Берлога1", Медведь = медведь1 }; + Берлога берлога2 = new Берлога { Наименование = "Берлога2", Медведь = медведь1 }; + Берлога берлога3 = new Берлога { Наименование = "Берлога3", Медведь = медведь1 }; + args.DataService.UpdateObject(берлога1); + args.DataService.UpdateObject(берлога2); + args.DataService.UpdateObject(берлога3); + + // Обновляем ссылку. + берлога1.Медведь = медведь2; + + // Представление, по которому будем обновлять. + string[] берлогаPropertiesNames = + { + Information.ExtractPropertyPath<Берлога>(x => x.__PrimaryKey), + }; + var берлогаDynamicView = new View(new ViewAttribute("берлогаDynamicView", берлогаPropertiesNames), typeof(Берлога)); + + // Преобразуем объект данных в JSON-строку. + string requestJsonData = берлога1.ToJson(берлогаDynamicView, args.Token.Model); + + // Добавляем в payload информацию, что поменяли ссылку на медведя. + requestJsonData = ODataTestHelper.AddEntryRelationship(requestJsonData, берлогаDynamicView, args.Token.Model, медведь2, nameof(Берлога.Медведь)); + + // Формируем URL запроса к OData-сервису (с идентификатором изменяемой сущности). + var requestUrl = ODataTestHelper.GetRequestUrl(args.Token.Model, берлога1); + + // Сейчас обновление мастеров не поддерживается. + Assert.ThrowsAsync(() => args.HttpClient.PatchAsJsonStringAsync(requestUrl, requestJsonData)); // Если падает Exception, значит представление поменялось и работает. + }); + } + } +} +#endif diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/WebFileTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/WebFileTest.cs index 708d2bb5..672fe9ac 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/WebFileTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Update/WebFileTest.cs @@ -13,7 +13,12 @@ using Unity; using Xunit; - public class WebFileTest: BaseODataServiceIntegratedTest +#if NETFRAMEWORK + public class WebFileTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class WebFileTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -21,7 +26,7 @@ public class WebFileTest: BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public WebFileTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public WebFileTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CodeGen/NewPlatform.Flexberry.ORM.ODataService.Tests.crp b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CodeGen/NewPlatform.Flexberry.ORM.ODataService.Tests.crp index ebb6a638..b149d758 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CodeGen/NewPlatform.Flexberry.ORM.ODataService.Tests.crp +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CodeGen/NewPlatform.Flexberry.ORM.ODataService.Tests.crp @@ -1,1147 +1,1335 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CustomWebApplicationFactory.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CustomWebApplicationFactory.cs index 1720729f..b875da11 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CustomWebApplicationFactory.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CustomWebApplicationFactory.cs @@ -35,7 +35,7 @@ protected override IWebHostBuilder CreateWebHostBuilder() var webHostBuilder = new WebHostBuilder() .UseUnityServiceProvider(_unityContainer) .UseContentRoot(contentRootDirectory) - .UseStartup(); + .UseStartup(); return webHostBuilder; } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/DotNetCoreTests.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/DotNetCoreTests.cs index e7bb4b35..882334bf 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/DotNetCoreTests.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/DotNetCoreTests.cs @@ -13,11 +13,11 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests /// /// Тесты, специфичные для .NET Core. /// - public class DotNetCoreTests : IClassFixture> + public class DotNetCoreTests : IClassFixture> { - private readonly WebApplicationFactory _factory; + private readonly WebApplicationFactory _factory; - public DotNetCoreTests(CustomWebApplicationFactory factory) + public DotNetCoreTests(CustomWebApplicationFactory factory) { _factory = factory; } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterGetTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterGetTest.cs index 4e108989..1cd43dcb 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterGetTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterGetTest.cs @@ -11,7 +11,12 @@ /// Класс тестов для тестирования логики после операции считывания данных OData-сервисом. /// +#if NETFRAMEWORK public class AfterGetTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class AfterGetTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -19,7 +24,7 @@ public class AfterGetTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public AfterGetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public AfterGetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterInternalServerErrorTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterInternalServerErrorTest.cs index 428eccb4..aa771b4a 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterInternalServerErrorTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterInternalServerErrorTest.cs @@ -12,7 +12,12 @@ /// /// Класс тестов для тестирования логики после возникновения исключения. /// +#if NETFRAMEWORK public class AfterInternalServerErrorTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class AfterInternalServerErrorTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -20,7 +25,7 @@ public class AfterInternalServerErrorTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public AfterInternalServerErrorTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public AfterInternalServerErrorTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } @@ -48,13 +53,13 @@ public Exception AfterInternalServerError(Exception e, ref HttpStatusCode code) public void TestAfterInternalServerError() { ActODataService(args => - { + { #if NETFRAMEWORK args.Token.Events.CallbackAfterInternalServerError = AfterInternalServerError; #elif NETCOREAPP CustomExceptionFilter.CallbackAfterInternalServerError = AfterInternalServerError; #endif - + Медведь медв = new Медведь { Вес = 48, Пол = tПол.Мужской }; Медведь медв2 = new Медведь { Вес = 148, Пол = tПол.Мужской }; Лес лес = new Лес { Название = "Бор" }; diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterSaveTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterSaveTest.cs index 52d93515..3779edd7 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterSaveTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/AfterSaveTest.cs @@ -23,7 +23,12 @@ /// /// Класс тестов для тестирования логики после операций модификации данных OData-сервисом (вставка, обновление, удаление). /// +#if NETFRAMEWORK public class AfterSaveTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class AfterSaveTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -31,7 +36,7 @@ public class AfterSaveTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public AfterSaveTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public AfterSaveTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeGetTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeGetTest.cs index 5644de97..ab3ef94a 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeGetTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeGetTest.cs @@ -1,14 +1,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests.Events { - using System; - using System.Collections.Generic; + using System; + using System.Collections.Generic; using System.Net; using System.Net.Http; using ICSSoft.STORMNET; - using ICSSoft.STORMNET.Business; - using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; - using Newtonsoft.Json; + using ICSSoft.STORMNET.Business; + using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; + using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Xunit; @@ -16,7 +16,12 @@ /// /// Класс тестов для тестирования логики после операций модификации данных OData-сервисом (вставка, обновление, удаление). /// +#if NETFRAMEWORK public class BeforeGetTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class BeforeGetTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -24,7 +29,7 @@ public class BeforeGetTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public BeforeGetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public BeforeGetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } @@ -43,14 +48,14 @@ public bool BeforeGet(ref LoadingCustomizationStruct lcs) return true; } - /// - /// Блокирует получение объектов. - /// - /// LCS. - /// false - public bool FalseBeforeGet(ref LoadingCustomizationStruct lcs) - { - return false; + /// + /// Блокирует получение объектов. + /// + /// LCS. + /// false + public bool FalseBeforeGet(ref LoadingCustomizationStruct lcs) + { + return false; } /// diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeSaveTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeSaveTest.cs index 153301b1..0e17c3f2 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeSaveTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Events/BeforeSaveTest.cs @@ -17,7 +17,12 @@ /// /// Класс тестов для тестирования логики перед операциями модификации данных OData-сервисом (вставка, обновление, удаление). /// +#if NETFRAMEWORK public class BeforeSaveTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class BeforeSaveTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -25,7 +30,7 @@ public class BeforeSaveTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public BeforeSaveTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public BeforeSaveTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Files/FileControllerTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Files/FileControllerTest.cs index a41cfce3..321d0ca9 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Files/FileControllerTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Files/FileControllerTest.cs @@ -26,7 +26,12 @@ /// /// Тесты файлового контроллера , отвечающего за загрузку файлов на сервер и их скачивание. /// +#if NETFRAMEWORK public class FileControllerTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class FileControllerTest : BaseODataServiceIntegratedTest +#endif { private const string FileBaseUrl = "http://localhost/api/File"; @@ -66,7 +71,7 @@ public FileControllerTest() /// /// Factory for application. /// Debug information output. - public FileControllerTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FileControllerTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) #endif { diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/ActionsTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/ActionsTest.cs index f5431b2a..8bba6c0e 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/ActionsTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/ActionsTest.cs @@ -29,7 +29,12 @@ /// /// Класс тестов для тестирования метаданных, получаемых от OData-сервиса. /// +#if NETFRAMEWORK public class ActionsTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class ActionsTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -37,7 +42,7 @@ public class ActionsTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public ActionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public ActionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/DelegateFunctionsTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/DelegateFunctionsTest.cs index f18e1521..fc083751 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/DelegateFunctionsTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/DelegateFunctionsTest.cs @@ -13,7 +13,12 @@ /// /// Unit test class for OData Service user-defined functions /// +#if NETFRAMEWORK public class DelegateFunctionsTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class DelegateFunctionsTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -21,7 +26,7 @@ public class DelegateFunctionsTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public DelegateFunctionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public DelegateFunctionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/FunctionsTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/FunctionsTest.cs index 5451e67f..3da4dca4 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/FunctionsTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Functions/FunctionsTest.cs @@ -28,7 +28,12 @@ /// /// Класс тестов для тестирования метаданных, получаемых от OData-сервиса. /// +#if NETFRAMEWORK public class FunctionsTest : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class FunctionsTest : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -36,7 +41,7 @@ public class FunctionsTest : BaseODataServiceIntegratedTest /// /// Фабрика для приложения. /// Вывод отладочной информации. - public FunctionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + public FunctionsTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Helpers/ODataTestHelper.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Helpers/ODataTestHelper.cs new file mode 100644 index 00000000..4f8bf49c --- /dev/null +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Helpers/ODataTestHelper.cs @@ -0,0 +1,45 @@ +namespace NewPlatform.Flexberry.ORM.ODataService.Tests.Helpers +{ + using ICSSoft.STORMNET; + using ICSSoft.STORMNET.KeyGen; + using NewPlatform.Flexberry.ORM.ODataService.Model; + + /// + /// Вспомогательные утилиты для тестирования OData. + /// + public static class ODataTestHelper + { + /// + /// Добавить запись об изменении ссылки у объекта в тело запроса к OData. + /// + /// Исходное тело запроса. + /// Представление исходного объекта. + /// EDM модель. + /// Новый объект данных (по ссылке). + /// Ссылка на новый объект данных. + /// Новое тело запроса к OData. + public static string AddEntryRelationship(string requestJsonData, View view, DataObjectEdmModel model, DataObject dataObject, string relationName) + { + DataObjectDictionary objJsonМедв = DataObjectDictionary.Parse(requestJsonData, view, model); + + objJsonМедв.Add( + $"{relationName}@odata.bind", + string.Format( + "{0}({1})", + model.GetEdmEntitySet(dataObject.GetType()).Name, + ((KeyGuid)dataObject.__PrimaryKey).Guid.ToString("D"))); + + var result = objJsonМедв.Serialize(); + return result; + } + + /// + /// Получить URL для запроса к OData. + /// + /// EDM модель. + /// Объект (по которому выполняется запрос). + /// URL запроса к OData. + public static string GetRequestUrl(DataObjectEdmModel model, DataObject dataObject) + => string.Format("http://localhost/odata/{0}({1})", model.GetEdmEntitySet(dataObject.GetType()).Name, ((KeyGuid)dataObject.__PrimaryKey).Guid.ToString()); + } +} diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Model/CustomizationEdmModelNames.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Model/CustomizationEdmModelNames.cs index 656c56e8..fba948f5 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Model/CustomizationEdmModelNames.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Model/CustomizationEdmModelNames.cs @@ -15,7 +15,12 @@ /// /// Класс тестов для тестирования метаданных, получаемых от OData-сервиса. /// +#if NETFRAMEWORK public class CustomizationEdmModelNames : BaseODataServiceIntegratedTest +#endif +#if NETCOREAPP + public class CustomizationEdmModelNames : BaseODataServiceIntegratedTest +#endif { #if NETCOREAPP /// @@ -23,7 +28,8 @@ public class CustomizationEdmModelNames : BaseODataServiceIntegratedTest /// /// Factory for application. /// Debug information output. - public CustomizationEdmModelNames(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + /// Фабрика для приложения. + public CustomizationEdmModelNames(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj index c0e76709..8dbeab6f 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj @@ -40,9 +40,9 @@ - - - + + + diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/DefaultOfflineManagerIntegratedTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/DefaultOfflineManagerIntegratedTest.cs index a12e4345..2a4f4bee 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/DefaultOfflineManagerIntegratedTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/DefaultOfflineManagerIntegratedTest.cs @@ -4,22 +4,30 @@ using System.Collections.Generic; using ICSSoft.STORMNET; using Moq; - using NewPlatform.Flexberry.ORM.CurrentUserService; + using NewPlatform.Flexberry.ORM.CurrentUserService; using NewPlatform.Flexberry.ORM.ODataService.Offline; using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions; using NewPlatform.Flexberry.Services; - using Unity; - using Xunit; + using Unity; + using Xunit; + /// + /// Initializes a new instance of the class. + /// + /// Factory for application. + /// Debug information output. +#if NETFRAMEWORK public class DefaultOfflineManagerIntegratedTest : BaseODataServiceIntegratedTest - { +#endif +#if NETCOREAPP + public class DefaultOfflineManagerIntegratedTest : BaseODataServiceIntegratedTest +#endif + { #if NETCOREAPP /// - /// Initializes a new instance of the class. - /// - /// Factory for application. - /// Debug information output. - public DefaultOfflineManagerIntegratedTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) + /// Конструктор по-умолчанию. + /// + public DefaultOfflineManagerIntegratedTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output) : base(factory, output) { } #endif diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/OfflineAuditServiceIntegratedTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/OfflineAuditServiceIntegratedTest.cs index 2796d429..67f5ab61 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/OfflineAuditServiceIntegratedTest.cs +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Offline/OfflineAuditServiceIntegratedTest.cs @@ -4,9 +4,9 @@ using ICSSoft.STORMNET.Business; using ICSSoft.STORMNET.Business.Audit; using ICSSoft.STORMNET.Business.Audit.Objects; - using ICSSoft.STORMNET.Security; - using Moq; - using NewPlatform.Flexberry.ORM.CurrentUserService; + using ICSSoft.STORMNET.Security; + using Moq; + using NewPlatform.Flexberry.ORM.CurrentUserService; using NewPlatform.Flexberry.ORM.ODataService.Offline; using Xunit; using Xunit.Abstractions; @@ -15,8 +15,13 @@ /// ORM-integrated unit test for . /// /// +#if NETFRAMEWORK public class OfflineAuditServiceIntegratedTest : BaseIntegratedTest - { +#endif +#if NETCOREAPP + public class OfflineAuditServiceIntegratedTest : BaseIntegratedTest +#endif + { #if NETFRAMEWORK /// /// Initializes a new instance of the class. @@ -29,10 +34,11 @@ public OfflineAuditServiceIntegratedTest() #if NETCOREAPP /// /// Initializes a new instance of the class. - /// - /// Factory for application. + /// + /// Factory for application. /// Debug information output. - public OfflineAuditServiceIntegratedTest(CustomWebApplicationFactory factory, ITestOutputHelper output) + /// + public OfflineAuditServiceIntegratedTest(CustomWebApplicationFactory factory, ITestOutputHelper output) : base(factory, output, "offline") { } @@ -115,7 +121,7 @@ public void TestSettingAuditFieldsForTypeWithEnabledAudit() /// The connection string. /// The instance. protected override MSSQLDataService CreateMssqlDataService(string connectionString) - { + { return new MSSQLDataService(new EmptySecurityManager(), GetAuditServiceForTest(), businessServerProvider) { CustomizationString = connectionString }; } @@ -125,7 +131,7 @@ protected override MSSQLDataService CreateMssqlDataService(string connectionStri /// The connection string. /// The instance. protected override PostgresDataService CreatePostgresDataService(string connectionString) - { + { return new PostgresDataService(new EmptySecurityManager(), GetAuditServiceForTest(), businessServerProvider) { CustomizationString = connectionString }; } diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/MSSql.create.sql b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/MSSql.create.sql index 672b66b2..d7dd68e5 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/MSSql.create.sql +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/MSSql.create.sql @@ -2,75 +2,59 @@ -CREATE TABLE [Лес] ( +CREATE TABLE [КлассСМножТипов] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Название] VARCHAR(255) NULL, - - [Площадь] INT NULL, - - [Заповедник] BIT NULL, + [PropertyBool] BIT NULL, - [ДатаПослОсмотра] DATETIME NULL, + [PropertyDateTime] DATETIME NULL, - [Страна] UNIQUEIDENTIFIER NULL, + [PropertyDecimal] DECIMAL NULL, - PRIMARY KEY ([primaryKey])) + [PropertyDouble] FLOAT NULL, -CREATE TABLE [КлассСМножТипов] ( + [PropertyEnum] VARCHAR(6) NULL, - [primaryKey] UNIQUEIDENTIFIER NOT NULL, + [PropertyFloat] REAL NULL, [PropertyGeography] geography NULL, - [PropertyEnum] VARCHAR(6) NULL, - - [PropertyBool] BIT NULL, - [PropertyInt] INT NULL, - [PropertyDateTime] DATETIME NULL, - - [PropertyString] VARCHAR(255) NULL, - - [PropertyFloat] REAL NULL, + [PropertyStormnetBlob] NVARCHAR(MAX) NULL, - [PropertyDouble] FLOAT NULL, + [PropertyStormnetContact] NVARCHAR(MAX) NULL, - [PropertyDecimal] DECIMAL NULL, + [PropertyStormnetEvent] NVARCHAR(MAX) NULL, - [PropertySystemNullableDateTime] DATETIME NULL, + [PropertyStormnetFile] NVARCHAR(MAX) NULL, - [PropertySystemNullableInt] INT NULL, + [PropertyStormnetGeoData] NVARCHAR(MAX) NULL, - [PropertySystemNullableGuid] UNIQUEIDENTIFIER NULL, + [PropertyStormnetImage] NVARCHAR(MAX) NULL, - [PropertySystemNullableDecimal] DECIMAL NULL, + [PropertyStormnetKeyGuid] UNIQUEIDENTIFIER NULL, [PropStormnetNullableDateTime] DATETIME NULL, - [PropertyStormnetNullableInt] INT NULL, - - [PropertyStormnetKeyGuid] UNIQUEIDENTIFIER NULL, - [PropStormnetNullableDecimal] DECIMAL NULL, - [PropertyStormnetPartliedDate] VARCHAR(255) NULL, + [PropertyStormnetNullableInt] INT NULL, - [PropertyStormnetContact] NVARCHAR(MAX) NULL, + [PropertyStormnetPartliedDate] VARCHAR(255) NULL, - [PropertyStormnetBlob] NVARCHAR(MAX) NULL, + [PropertyStormnetWebFile] NVARCHAR(MAX) NULL, - [PropertyStormnetEvent] NVARCHAR(MAX) NULL, + [PropertyString] VARCHAR(255) NULL, - [PropertyStormnetGeoData] NVARCHAR(MAX) NULL, + [PropertySystemNullableDateTime] DATETIME NULL, - [PropertyStormnetImage] NVARCHAR(MAX) NULL, + [PropertySystemNullableDecimal] DECIMAL NULL, - [PropertyStormnetWebFile] NVARCHAR(MAX) NULL, + [PropertySystemNullableGuid] UNIQUEIDENTIFIER NULL, - [PropertyStormnetFile] NVARCHAR(MAX) NULL, + [PropertySystemNullableInt] INT NULL, PRIMARY KEY ([primaryKey])) @@ -84,18 +68,35 @@ CREATE TABLE [Master] ( PRIMARY KEY ([primaryKey])) -CREATE TABLE [LegoPatent] ( +CREATE TABLE [Лес] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Name] VARCHAR(255) NULL, + [ДатаПослОсмотра] DATETIME NULL, - [Date] DATETIME NULL, + [Заповедник] BIT NULL, + + [Название] VARCHAR(255) NULL, + + [Площадь] INT NULL, + + [Страна] UNIQUEIDENTIFIER NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [LegoPatent] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, [Authors] VARCHAR(255) NULL, + [Date] DATETIME NULL, + [Description] VARCHAR(255) NULL, + [Name] VARCHAR(255) NULL, + [LegoBlock] UNIQUEIDENTIFIER NULL, [LegoDevice] UNIQUEIDENTIFIER NULL, @@ -193,12 +194,12 @@ CREATE TABLE [Driver] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Name] VARCHAR(255) NULL, - [CarCount] INT NULL, [Documents] BIT NULL, + [Name] VARCHAR(255) NULL, + PRIMARY KEY ([primaryKey])) @@ -226,41 +227,6 @@ CREATE TABLE [Журнал] ( PRIMARY KEY ([primaryKey])) -CREATE TABLE [Медведь] ( - - [primaryKey] UNIQUEIDENTIFIER NOT NULL, - - [ПолеБС] VARCHAR(255) NULL, - - [ПорядковыйНомер] INT NULL, - - [Вес] INT NULL, - - [ЦветГлаз] VARCHAR(255) NULL, - - [Пол] VARCHAR(9) NULL, - - [ДатаРождения] DATETIME NULL, - - [CreateTime] DATETIME NULL, - - [Creator] VARCHAR(255) NULL, - - [EditTime] DATETIME NULL, - - [Editor] VARCHAR(255) NULL, - - [ЛесОбитания] UNIQUEIDENTIFIER NULL, - - [Папа] UNIQUEIDENTIFIER NULL, - - [Страна] UNIQUEIDENTIFIER NULL, - - [Мама] UNIQUEIDENTIFIER NULL, - - PRIMARY KEY ([primaryKey])) - - CREATE TABLE [TestMaster] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, @@ -298,18 +264,18 @@ CREATE TABLE [LegoBlock] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Width] INT NULL, - - [Height] INT NULL, + [Configuration] VARCHAR(255) NULL, [Depth] INT NULL, - [Configuration] VARCHAR(255) NULL, + [Height] INT NULL, - [Name] VARCHAR(255) NULL, + [Width] INT NULL, [BlockId] INT NULL, + [Name] VARCHAR(255) NULL, + [Material] UNIQUEIDENTIFIER NULL, [Color] UNIQUEIDENTIFIER NULL, @@ -317,39 +283,14 @@ CREATE TABLE [LegoBlock] ( PRIMARY KEY ([primaryKey])) -CREATE TABLE [Берлога] ( - - [primaryKey] UNIQUEIDENTIFIER NOT NULL, - - [ПолеБС] VARCHAR(255) NULL, - - [Наименование] VARCHAR(255) NULL, - - [Комфортность] INT NULL, - - [Заброшена] BIT NULL, - - [Сертификат] NVARCHAR(MAX) NULL, - - [CertString] NVARCHAR(MAX) NULL, - - [ЛесРасположения] UNIQUEIDENTIFIER NULL, - - [ДляКакойПороды] UNIQUEIDENTIFIER NULL, - - [Медведь] UNIQUEIDENTIFIER NOT NULL, - - PRIMARY KEY ([primaryKey])) - - CREATE TABLE [LegoBlockColor] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Name] VARCHAR(255) NULL, - [ColorNumber] INT NULL, + [Name] VARCHAR(255) NULL, + PRIMARY KEY ([primaryKey])) @@ -366,10 +307,10 @@ CREATE TABLE [Котенок] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [КличкаКотенка] VARCHAR(255) NULL, - [Глупость] INT NULL, + [КличкаКотенка] VARCHAR(255) NULL, + [Кошка_m0] UNIQUEIDENTIFIER NOT NULL, PRIMARY KEY ([primaryKey])) @@ -412,21 +353,6 @@ CREATE TABLE [DetailsClass1] ( PRIMARY KEY ([primaryKey])) -CREATE TABLE [Car] ( - - [primaryKey] UNIQUEIDENTIFIER NOT NULL, - - [Number] VARCHAR(255) NULL, - - [Model] VARCHAR(255) NULL, - - [TipCar] VARCHAR(9) NULL, - - [driver] UNIQUEIDENTIFIER NOT NULL, - - PRIMARY KEY ([primaryKey])) - - CREATE TABLE [LegoBlockCustomPanel] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, @@ -446,10 +372,10 @@ CREATE TABLE [ТипЛапы] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Название] VARCHAR(255) NULL, - [Актуально] BIT NULL, + [Название] VARCHAR(255) NULL, + PRIMARY KEY ([primaryKey])) @@ -466,10 +392,10 @@ CREATE TABLE [LegoPanelAngle] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Name] VARCHAR(255) NULL, - [Angle] INT NULL, + [Name] VARCHAR(255) NULL, + PRIMARY KEY ([primaryKey])) @@ -548,10 +474,10 @@ CREATE TABLE [ТипПороды] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Название] VARCHAR(255) NULL, - [ДатаРегистрации] DATETIME NULL, + [Название] VARCHAR(255) NULL, + PRIMARY KEY ([primaryKey])) @@ -559,10 +485,10 @@ CREATE TABLE [LegoBlockTopPanel] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [WidthCount] INT NULL, - [HeightCount] INT NULL, + [WidthCount] INT NULL, + [SocketStandard] UNIQUEIDENTIFIER NULL, [Block] UNIQUEIDENTIFIER NOT NULL, @@ -626,10 +552,10 @@ CREATE TABLE [LegoDevice] ( [Electricity] BIT NULL, - [Name] VARCHAR(255) NULL, - [BlockId] INT NULL, + [Name] VARCHAR(255) NULL, + [Color] UNIQUEIDENTIFIER NULL, PRIMARY KEY ([primaryKey])) @@ -645,10 +571,10 @@ CREATE TABLE [Наследник] ( [Свойство2] INT NULL, - [Master] UNIQUEIDENTIFIER NULL, - [Мастер] UNIQUEIDENTIFIER NULL, + [Master] UNIQUEIDENTIFIER NULL, + PRIMARY KEY ([primaryKey])) @@ -656,10 +582,10 @@ CREATE TABLE [LegoBlockBottomPanel] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [WidthCount] INT NULL, - [HeightCount] INT NULL, + [WidthCount] INT NULL, + [Block] UNIQUEIDENTIFIER NOT NULL, PRIMARY KEY ([primaryKey])) @@ -671,55 +597,130 @@ CREATE TABLE [ДочернийКласс] ( [ChildProperty] VARCHAR(255) NULL, - [PropertyGeography] geography NULL, + [PropertyBool] BIT NULL, + + [PropertyDateTime] DATETIME NULL, + + [PropertyDecimal] DECIMAL NULL, + + [PropertyDouble] FLOAT NULL, [PropertyEnum] VARCHAR(6) NULL, - [PropertyBool] BIT NULL, + [PropertyFloat] REAL NULL, + + [PropertyGeography] geography NULL, [PropertyInt] INT NULL, - [PropertyDateTime] DATETIME NULL, + [PropertyStormnetBlob] NVARCHAR(MAX) NULL, - [PropertyString] VARCHAR(255) NULL, + [PropertyStormnetContact] NVARCHAR(MAX) NULL, - [PropertyFloat] REAL NULL, + [PropertyStormnetEvent] NVARCHAR(MAX) NULL, - [PropertyDouble] FLOAT NULL, + [PropertyStormnetFile] NVARCHAR(MAX) NULL, - [PropertyDecimal] DECIMAL NULL, + [PropertyStormnetGeoData] NVARCHAR(MAX) NULL, + + [PropertyStormnetImage] NVARCHAR(MAX) NULL, + + [PropertyStormnetKeyGuid] UNIQUEIDENTIFIER NULL, + + [PropStormnetNullableDateTime] DATETIME NULL, + + [PropStormnetNullableDecimal] DECIMAL NULL, + + [PropertyStormnetNullableInt] INT NULL, + + [PropertyStormnetPartliedDate] VARCHAR(255) NULL, + + [PropertyStormnetWebFile] NVARCHAR(MAX) NULL, + + [PropertyString] VARCHAR(255) NULL, [PropertySystemNullableDateTime] DATETIME NULL, - [PropertySystemNullableInt] INT NULL, + [PropertySystemNullableDecimal] DECIMAL NULL, [PropertySystemNullableGuid] UNIQUEIDENTIFIER NULL, - [PropertySystemNullableDecimal] DECIMAL NULL, + [PropertySystemNullableInt] INT NULL, - [PropStormnetNullableDateTime] DATETIME NULL, + PRIMARY KEY ([primaryKey])) - [PropertyStormnetNullableInt] INT NULL, - [PropertyStormnetKeyGuid] UNIQUEIDENTIFIER NULL, +CREATE TABLE [Медведь] ( - [PropStormnetNullableDecimal] DECIMAL NULL, + [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [PropertyStormnetPartliedDate] VARCHAR(255) NULL, + [Вес] INT NULL, - [PropertyStormnetContact] NVARCHAR(MAX) NULL, + [ДатаРождения] DATETIME NULL, - [PropertyStormnetBlob] NVARCHAR(MAX) NULL, + [Пол] VARCHAR(9) NULL, - [PropertyStormnetEvent] NVARCHAR(MAX) NULL, + [ПолеБС] VARCHAR(255) NULL, - [PropertyStormnetGeoData] NVARCHAR(MAX) NULL, + [ПорядковыйНомер] INT NULL, - [PropertyStormnetImage] NVARCHAR(MAX) NULL, + [ЦветГлаз] VARCHAR(255) NULL, - [PropertyStormnetWebFile] NVARCHAR(MAX) NULL, + [CreateTime] DATETIME NULL, - [PropertyStormnetFile] NVARCHAR(MAX) NULL, + [Creator] VARCHAR(255) NULL, + + [Editor] VARCHAR(255) NULL, + + [EditTime] DATETIME NULL, + + [ЛесОбитания] UNIQUEIDENTIFIER NULL, + + [Мама] UNIQUEIDENTIFIER NULL, + + [Папа] UNIQUEIDENTIFIER NULL, + + [Страна] UNIQUEIDENTIFIER NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [Берлога] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Заброшена] BIT NULL, + + [Комфортность] INT NULL, + + [Наименование] VARCHAR(255) NULL, + + [ПолеБС] VARCHAR(255) NULL, + + [Сертификат] NVARCHAR(MAX) NULL, + + [CertString] NVARCHAR(MAX) NULL, + + [ЛесРасположения] UNIQUEIDENTIFIER NULL, + + [ДляКакойПороды] UNIQUEIDENTIFIER NULL, + + [Медведь] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [Car] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Model] VARCHAR(255) NULL, + + [Number] VARCHAR(255) NULL, + + [TipCar] VARCHAR(9) NULL, + + [driver] UNIQUEIDENTIFIER NOT NULL, PRIMARY KEY ([primaryKey])) @@ -736,27 +737,28 @@ CREATE TABLE [Перелом] ( PRIMARY KEY ([primaryKey])) + CREATE TABLE [Лапа] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Цвет] VARCHAR(255) NULL, - - [Размер] INT NULL, + [БылиЛиПереломы] BIT NULL, [ДатаРождения] DATETIME NULL, - [БылиЛиПереломы] BIT NULL, + [Номер] INT NULL, - [Сторона] VARCHAR(11) NULL, + [Размер] INT NULL, - [Номер] INT NULL, + [РазмерDecimal] DECIMAL NULL, [РазмерDouble] FLOAT NULL, [РазмерFloat] REAL NULL, - [РазмерDecimal] DECIMAL NULL, + [Сторона] VARCHAR(11) NULL, + + [Цвет] VARCHAR(255) NULL, [ТипЛапы_m0] UNIQUEIDENTIFIER NULL, @@ -769,25 +771,132 @@ CREATE TABLE [Кошка] ( [primaryKey] UNIQUEIDENTIFIER NOT NULL, - [Кличка] VARCHAR(255) NULL, + [Агрессивная] BIT NULL, [ДатаРождения] DATETIME NULL, - [Тип] VARCHAR(11) NULL, - - [ПородаСтрокой] VARCHAR(255) NULL, - - [Агрессивная] BIT NULL, + [Кличка] VARCHAR(255) NULL, [УсыСлева] INT NULL, [УсыСправа] INT NULL, + [ПородаСтрокой] VARCHAR(255) NULL, + + [Тип] VARCHAR(11) NULL, + [Порода_m0] UNIQUEIDENTIFIER NOT NULL, PRIMARY KEY ([primaryKey])) +CREATE TABLE [DetailAndMaster] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [Agregator] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [TestConfiguration] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [TestClass] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [FirstLevel] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [ThirdLevel] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [TestClass] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [SecondLevel1] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [FirstLevel] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [FirstLevel] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [TestConfiguration] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [SecondLevel2] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [SecondLevel1_m0] UNIQUEIDENTIFIER NULL, + + [SecondLevel1_m1] UNIQUEIDENTIFIER NULL, + + [FirstLevel] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [TestAssociation] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name2] VARCHAR(255) NULL, + + [Name] VARCHAR(255) NULL, + + [SecondLevel1_m0] UNIQUEIDENTIFIER NULL, + + [SecondLevel1_m1] UNIQUEIDENTIFIER NULL, + + [FirstLevel] UNIQUEIDENTIFIER NOT NULL, + + PRIMARY KEY ([primaryKey])) + + +CREATE TABLE [AgregatorSameMD] ( + + [primaryKey] UNIQUEIDENTIFIER NOT NULL, + + [Name] VARCHAR(255) NULL, + + [Master] UNIQUEIDENTIFIER NULL, + + PRIMARY KEY ([primaryKey])) + + CREATE TABLE [STORMNETLOCKDATA] ( [LockKey] VARCHAR(300) NOT NULL, @@ -1069,168 +1178,6 @@ CREATE TABLE [STORMAuField] ( PRIMARY KEY ([primaryKey])) - ALTER TABLE [Лес] ADD CONSTRAINT [Лес_FСтрана_0] FOREIGN KEY ([Страна]) REFERENCES [Страна] -CREATE INDEX Лес_IСтрана on [Лес] ([Страна]) - - ALTER TABLE [LegoPatent] ADD CONSTRAINT [LegoPatent_FLegoBlock_0] FOREIGN KEY ([LegoBlock]) REFERENCES [LegoBlock] -CREATE INDEX LegoPatent_ILegoBlock on [LegoPatent] ([LegoBlock]) - - ALTER TABLE [LegoPatent] ADD CONSTRAINT [LegoPatent_FLegoDevice_0] FOREIGN KEY ([LegoDevice]) REFERENCES [LegoDevice] -CREATE INDEX LegoPatent_ILegoDevice on [LegoPatent] ([LegoDevice]) - - ALTER TABLE [Мастер] ADD CONSTRAINT [Мастер_FМастер2_0] FOREIGN KEY ([Мастер2]) REFERENCES [Мастер2] -CREATE INDEX Мастер_IМастер2 on [Мастер] ([Мастер2]) - - ALTER TABLE [Блоха] ADD CONSTRAINT [Блоха_FМедведь_0] FOREIGN KEY ([МедведьОбитания]) REFERENCES [Медведь] -CREATE INDEX Блоха_IМедведьОбитания on [Блоха] ([МедведьОбитания]) - - ALTER TABLE [TestDetailWithCicle] ADD CONSTRAINT [TestDetailWithCicle_FTestDetailWithCicle_0] FOREIGN KEY ([Parent]) REFERENCES [TestDetailWithCicle] -CREATE INDEX TestDetailWithCicle_IParent on [TestDetailWithCicle] ([Parent]) - - ALTER TABLE [TestDetailWithCicle] ADD CONSTRAINT [TestDetailWithCicle_FTestMaster_0] FOREIGN KEY ([TestMaster]) REFERENCES [TestMaster] -CREATE INDEX TestDetailWithCicle_ITestMaster on [TestDetailWithCicle] ([TestMaster]) - - ALTER TABLE [Детейл] ADD CONSTRAINT [Детейл_FБазовыйКласс_0] FOREIGN KEY ([БазовыйКласс_m0]) REFERENCES [БазовыйКласс] -CREATE INDEX Детейл_IБазовыйКласс_m0 on [Детейл] ([БазовыйКласс_m0]) - - ALTER TABLE [Детейл] ADD CONSTRAINT [Детейл_FНаследник_0] FOREIGN KEY ([БазовыйКласс_m1]) REFERENCES [Наследник] -CREATE INDEX Детейл_IБазовыйКласс_m1 on [Детейл] ([БазовыйКласс_m1]) - - ALTER TABLE [Журнал] ADD CONSTRAINT [Журнал_FАвтор_0] FOREIGN KEY ([Автор2]) REFERENCES [Автор] -CREATE INDEX Журнал_IАвтор2 on [Журнал] ([Автор2]) - - ALTER TABLE [Журнал] ADD CONSTRAINT [Журнал_FБиблиотека_0] FOREIGN KEY ([Библиотека2]) REFERENCES [Библиотека] -CREATE INDEX Журнал_IБиблиотека2 on [Журнал] ([Библиотека2]) - - ALTER TABLE [Медведь] ADD CONSTRAINT [Медведь_FЛес_0] FOREIGN KEY ([ЛесОбитания]) REFERENCES [Лес] -CREATE INDEX Медведь_IЛесОбитания on [Медведь] ([ЛесОбитания]) - - ALTER TABLE [Медведь] ADD CONSTRAINT [Медведь_FМедведь_0] FOREIGN KEY ([Папа]) REFERENCES [Медведь] -CREATE INDEX Медведь_IПапа on [Медведь] ([Папа]) - - ALTER TABLE [Медведь] ADD CONSTRAINT [Медведь_FСтрана_0] FOREIGN KEY ([Страна]) REFERENCES [Страна] -CREATE INDEX Медведь_IСтрана on [Медведь] ([Страна]) - - ALTER TABLE [Медведь] ADD CONSTRAINT [Медведь_FМедведь_1] FOREIGN KEY ([Мама]) REFERENCES [Медведь] -CREATE INDEX Медведь_IМама on [Медведь] ([Мама]) - - ALTER TABLE [MainClass] ADD CONSTRAINT [MainClass_FAgrClass1_0] FOREIGN KEY ([AgrClass1]) REFERENCES [AgrClass1] -CREATE INDEX MainClass_IAgrClass1 on [MainClass] ([AgrClass1]) - - ALTER TABLE [Порода] ADD CONSTRAINT [Порода_FПорода_0] FOREIGN KEY ([Иерархия_m0]) REFERENCES [Порода] -CREATE INDEX Порода_IИерархия_m0 on [Порода] ([Иерархия_m0]) - - ALTER TABLE [Порода] ADD CONSTRAINT [Порода_FТипПороды_0] FOREIGN KEY ([ТипПороды_m0]) REFERENCES [ТипПороды] -CREATE INDEX Порода_IТипПороды_m0 on [Порода] ([ТипПороды_m0]) - - ALTER TABLE [LegoBlock] ADD CONSTRAINT [LegoBlock_FLegoMaterial_0] FOREIGN KEY ([Material]) REFERENCES [LegoMaterial] -CREATE INDEX LegoBlock_IMaterial on [LegoBlock] ([Material]) - - ALTER TABLE [LegoBlock] ADD CONSTRAINT [LegoBlock_FLegoBlockColor_0] FOREIGN KEY ([Color]) REFERENCES [LegoBlockColor] -CREATE INDEX LegoBlock_IColor on [LegoBlock] ([Color]) - - ALTER TABLE [Берлога] ADD CONSTRAINT [Берлога_FЛес_0] FOREIGN KEY ([ЛесРасположения]) REFERENCES [Лес] -CREATE INDEX Берлога_IЛесРасположения on [Берлога] ([ЛесРасположения]) - - ALTER TABLE [Берлога] ADD CONSTRAINT [Берлога_FПорода_0] FOREIGN KEY ([ДляКакойПороды]) REFERENCES [Порода] -CREATE INDEX Берлога_IДляКакойПороды on [Берлога] ([ДляКакойПороды]) - - ALTER TABLE [Берлога] ADD CONSTRAINT [Берлога_FМедведь_0] FOREIGN KEY ([Медведь]) REFERENCES [Медведь] -CREATE INDEX Берлога_IМедведь on [Берлога] ([Медведь]) - - ALTER TABLE [Котенок] ADD CONSTRAINT [Котенок_FКошка_0] FOREIGN KEY ([Кошка_m0]) REFERENCES [Кошка] -CREATE INDEX Котенок_IКошка_m0 on [Котенок] ([Кошка_m0]) - - ALTER TABLE [Daughter] ADD CONSTRAINT [Daughter_FPerson_0] FOREIGN KEY ([Parent]) REFERENCES [Person] -CREATE INDEX Daughter_IParent on [Daughter] ([Parent]) - - ALTER TABLE [LegoBlockTopPanelHole] ADD CONSTRAINT [LegoBlockTopPanelHole_FLegoBlockTopPanel_0] FOREIGN KEY ([TopPanel]) REFERENCES [LegoBlockTopPanel] -CREATE INDEX LegoBlockTopPanelHole_ITopPanel on [LegoBlockTopPanelHole] ([TopPanel]) - - ALTER TABLE [DetailsClass1] ADD CONSTRAINT [DetailsClass1_FDetailsClass2_0] FOREIGN KEY ([DetailsClass2]) REFERENCES [DetailsClass2] -CREATE INDEX DetailsClass1_IDetailsClass2 on [DetailsClass1] ([DetailsClass2]) - - ALTER TABLE [DetailsClass1] ADD CONSTRAINT [DetailsClass1_FAgrClass1_0] FOREIGN KEY ([AgrClass1]) REFERENCES [AgrClass1] -CREATE INDEX DetailsClass1_IAgrClass1 on [DetailsClass1] ([AgrClass1]) - - ALTER TABLE [Car] ADD CONSTRAINT [Car_FDriver_0] FOREIGN KEY ([driver]) REFERENCES [Driver] -CREATE INDEX Car_Idriver on [Car] ([driver]) - - ALTER TABLE [LegoBlockCustomPanel] ADD CONSTRAINT [LegoBlockCustomPanel_FLegoPanelAngle_0] FOREIGN KEY ([PanelAngle]) REFERENCES [LegoPanelAngle] -CREATE INDEX LegoBlockCustomPanel_IPanelAngle on [LegoBlockCustomPanel] ([PanelAngle]) - - ALTER TABLE [LegoBlockCustomPanel] ADD CONSTRAINT [LegoBlockCustomPanel_FLegoBlock_0] FOREIGN KEY ([Block]) REFERENCES [LegoBlock] -CREATE INDEX LegoBlockCustomPanel_IBlock on [LegoBlockCustomPanel] ([Block]) - - ALTER TABLE [Детейл2] ADD CONSTRAINT [Детейл2_FДетейл_0] FOREIGN KEY ([Детейл_m0]) REFERENCES [Детейл] -CREATE INDEX Детейл2_IДетейл_m0 on [Детейл2] ([Детейл_m0]) - - ALTER TABLE [Детейл2] ADD CONSTRAINT [Детейл2_FДетейлНаследник_0] FOREIGN KEY ([Детейл_m1]) REFERENCES [ДетейлНаследник] -CREATE INDEX Детейл2_IДетейл_m1 on [Детейл2] ([Детейл_m1]) - - ALTER TABLE [Son] ADD CONSTRAINT [Son_FPerson_0] FOREIGN KEY ([Parent]) REFERENCES [Person] -CREATE INDEX Son_IParent on [Son] ([Parent]) - - ALTER TABLE [LegoBlockTopPanel] ADD CONSTRAINT [LegoBlockTopPanel_FLegoSocketStandard_0] FOREIGN KEY ([SocketStandard]) REFERENCES [LegoSocketStandard] -CREATE INDEX LegoBlockTopPanel_ISocketStandard on [LegoBlockTopPanel] ([SocketStandard]) - - ALTER TABLE [LegoBlockTopPanel] ADD CONSTRAINT [LegoBlockTopPanel_FLegoBlock_0] FOREIGN KEY ([Block]) REFERENCES [LegoBlock] -CREATE INDEX LegoBlockTopPanel_IBlock on [LegoBlockTopPanel] ([Block]) - - ALTER TABLE [ДетейлНаследник] ADD CONSTRAINT [ДетейлНаследник_FБазовыйКласс_0] FOREIGN KEY ([БазовыйКласс_m0]) REFERENCES [БазовыйКласс] -CREATE INDEX ДетейлНаследник_IБазовыйКласс_m0 on [ДетейлНаследник] ([БазовыйКласс_m0]) - - ALTER TABLE [ДетейлНаследник] ADD CONSTRAINT [ДетейлНаследник_FНаследник_0] FOREIGN KEY ([БазовыйКласс_m1]) REFERENCES [Наследник] -CREATE INDEX ДетейлНаследник_IБазовыйКласс_m1 on [ДетейлНаследник] ([БазовыйКласс_m1]) - - ALTER TABLE [DetailsClass2] ADD CONSTRAINT [DetailsClass2_FAgrClass2_0] FOREIGN KEY ([AgrClass2]) REFERENCES [AgrClass2] -CREATE INDEX DetailsClass2_IAgrClass2 on [DetailsClass2] ([AgrClass2]) - - ALTER TABLE [Книга] ADD CONSTRAINT [Книга_FАвтор_0] FOREIGN KEY ([Автор1]) REFERENCES [Автор] -CREATE INDEX Книга_IАвтор1 on [Книга] ([Автор1]) - - ALTER TABLE [Книга] ADD CONSTRAINT [Книга_FБиблиотека_0] FOREIGN KEY ([Библиотека1]) REFERENCES [Библиотека] -CREATE INDEX Книга_IБиблиотека1 on [Книга] ([Библиотека1]) - - ALTER TABLE [LegoDevice] ADD CONSTRAINT [LegoDevice_FLegoBlockColor_0] FOREIGN KEY ([Color]) REFERENCES [LegoBlockColor] -CREATE INDEX LegoDevice_IColor on [LegoDevice] ([Color]) - - ALTER TABLE [Наследник] ADD CONSTRAINT [Наследник_FMaster_0] FOREIGN KEY ([Master]) REFERENCES [Master] -CREATE INDEX Наследник_IMaster on [Наследник] ([Master]) - - ALTER TABLE [Наследник] ADD CONSTRAINT [Наследник_FМастер_0] FOREIGN KEY ([Мастер]) REFERENCES [Мастер] -CREATE INDEX Наследник_IМастер on [Наследник] ([Мастер]) - - ALTER TABLE [LegoBlockBottomPanel] ADD CONSTRAINT [LegoBlockBottomPanel_FLegoBlock_0] FOREIGN KEY ([Block]) REFERENCES [LegoBlock] -CREATE INDEX LegoBlockBottomPanel_IBlock on [LegoBlockBottomPanel] ([Block]) - - ALTER TABLE [Перелом] ADD CONSTRAINT [Перелом_FЛапа_0] FOREIGN KEY ([Лапа_m0]) REFERENCES [Лапа] -CREATE INDEX Перелом_IЛапа_m0 on [Перелом] ([Лапа_m0]) - - ALTER TABLE [Лапа] ADD CONSTRAINT [Лапа_FТипЛапы_0] FOREIGN KEY ([ТипЛапы_m0]) REFERENCES [ТипЛапы] -CREATE INDEX Лапа_IТипЛапы_m0 on [Лапа] ([ТипЛапы_m0]) - - ALTER TABLE [Лапа] ADD CONSTRAINT [Лапа_FКошка_0] FOREIGN KEY ([Кошка_m0]) REFERENCES [Кошка] -CREATE INDEX Лапа_IКошка_m0 on [Лапа] ([Кошка_m0]) - - ALTER TABLE [Кошка] ADD CONSTRAINT [Кошка_FПорода_0] FOREIGN KEY ([Порода_m0]) REFERENCES [Порода] -CREATE INDEX Кошка_IПорода_m0 on [Кошка] ([Порода_m0]) - - ALTER TABLE [STORMWEBSEARCH] ADD CONSTRAINT [STORMWEBSEARCH_FSTORMFILTERSETTING_0] FOREIGN KEY ([FilterSetting_m0]) REFERENCES [STORMFILTERSETTING] - - ALTER TABLE [STORMFILTERDETAIL] ADD CONSTRAINT [STORMFILTERDETAIL_FSTORMFILTERSETTING_0] FOREIGN KEY ([FilterSetting_m0]) REFERENCES [STORMFILTERSETTING] - - ALTER TABLE [STORMFILTERLOOKUP] ADD CONSTRAINT [STORMFILTERLOOKUP_FSTORMFILTERSETTING_0] FOREIGN KEY ([FilterSetting_m0]) REFERENCES [STORMFILTERSETTING] - - ALTER TABLE [STORMLG] ADD CONSTRAINT [STORMLG_FSTORMAG_0] FOREIGN KEY ([Group_m0]) REFERENCES [STORMAG] - - ALTER TABLE [STORMLG] ADD CONSTRAINT [STORMLG_FSTORMAG_1] FOREIGN KEY ([User_m0]) REFERENCES [STORMAG] - - ALTER TABLE [STORMAuEntity] ADD CONSTRAINT [STORMAuEntity_FSTORMAG_0] FOREIGN KEY ([User_m0]) REFERENCES [STORMAG] - - ALTER TABLE [STORMAuEntity] ADD CONSTRAINT [STORMAuEntity_FSTORMAuObjType_0] FOREIGN KEY ([ObjectType_m0]) REFERENCES [STORMAuObjType] - ALTER TABLE [STORMAuField] ADD CONSTRAINT [STORMAuField_FSTORMAuField_0] FOREIGN KEY ([MainChange_m0]) REFERENCES [STORMAuField] - ALTER TABLE [STORMAuField] ADD CONSTRAINT [STORMAuField_FSTORMAuEntity_0] FOREIGN KEY ([AuditEntity_m0]) REFERENCES [STORMAuEntity] diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/Oracle.create.sql b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/Oracle.create.sql index 6f1691e3..0b914716 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/Oracle.create.sql +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/Oracle.create.sql @@ -2,78 +2,60 @@ -CREATE TABLE "Лес" +CREATE TABLE "КлассСМножТипов" ( "primaryKey" RAW(16) NOT NULL, - "Название" NVARCHAR2(255) NULL, - - "Площадь" NUMBER(10) NULL, - - "Заповедник" NUMBER(1) NULL, + "PropertyBool" NUMBER(1) NULL, - "ДатаПослОсмотра" DATE NULL, + "PropertyDateTime" DATE NULL, - "Страна" RAW(16) NULL, + "PropertyDecimal" NUMBER(38) NULL, - PRIMARY KEY ("primaryKey") -) ; + "PropertyDouble" FLOAT(126) NULL, -CREATE TABLE "КлассСМножТипов" -( + "PropertyEnum" NVARCHAR2(6) NULL, - "primaryKey" RAW(16) NOT NULL, + "PropertyFloat" FLOAT(53) NULL, "PropertyGeography" CLOB NULL, - "PropertyEnum" NVARCHAR2(6) NULL, - - "PropertyBool" NUMBER(1) NULL, - "PropertyInt" NUMBER(10) NULL, - "PropertyDateTime" DATE NULL, - - "PropertyString" NVARCHAR2(255) NULL, - - "PropertyFloat" FLOAT(53) NULL, + "PropertyStormnetBlob" CLOB NULL, - "PropertyDouble" FLOAT(126) NULL, + "PropertyStormnetContact" CLOB NULL, - "PropertyDecimal" NUMBER(38) NULL, + "PropertyStormnetEvent" CLOB NULL, - "PropertySystemNullableDateTime" DATE NULL, + "PropertyStormnetFile" CLOB NULL, - "PropertySystemNullableInt" NUMBER(10) NULL, + "PropertyStormnetGeoData" CLOB NULL, - "PropertySystemNullableGuid" RAW(16) NULL, + "PropertyStormnetImage" CLOB NULL, - "PropertySystemNullableDecimal" NUMBER(38) NULL, + "PropertyStormnetKeyGuid" RAW(16) NULL, "PropStormnetNullableDateTime" DATE NULL, - "PropertyStormnetNullableInt" NUMBER(10) NULL, - - "PropertyStormnetKeyGuid" RAW(16) NULL, - "PropStormnetNullableDecimal" NUMBER(38) NULL, - "PropertyStormnetPartliedDate" NVARCHAR2(255) NULL, + "PropertyStormnetNullableInt" NUMBER(10) NULL, - "PropertyStormnetContact" CLOB NULL, + "PropertyStormnetPartliedDate" NVARCHAR2(255) NULL, - "PropertyStormnetBlob" CLOB NULL, + "PropertyStormnetWebFile" CLOB NULL, - "PropertyStormnetEvent" CLOB NULL, + "PropertyString" NVARCHAR2(255) NULL, - "PropertyStormnetGeoData" CLOB NULL, + "PropertySystemNullableDateTime" DATE NULL, - "PropertyStormnetImage" CLOB NULL, + "PropertySystemNullableDecimal" NUMBER(38) NULL, - "PropertyStormnetWebFile" CLOB NULL, + "PropertySystemNullableGuid" RAW(16) NULL, - "PropertyStormnetFile" CLOB NULL, + "PropertySystemNullableInt" NUMBER(10) NULL, PRIMARY KEY ("primaryKey") ) ; @@ -90,19 +72,38 @@ CREATE TABLE "Master" ) ; -CREATE TABLE "LegoPatent" +CREATE TABLE "Лес" ( "primaryKey" RAW(16) NOT NULL, - "Name" NVARCHAR2(255) NULL, + "ДатаПослОсмотра" DATE NULL, - "Date" DATE NULL, + "Заповедник" NUMBER(1) NULL, + + "Название" NVARCHAR2(255) NULL, + + "Площадь" NUMBER(10) NULL, + + "Страна" RAW(16) NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "LegoPatent" +( + + "primaryKey" RAW(16) NOT NULL, "Authors" NVARCHAR2(255) NULL, + "Date" DATE NULL, + "Description" NVARCHAR2(255) NULL, + "Name" NVARCHAR2(255) NULL, + "LegoBlock" RAW(16) NULL, "LegoDevice" RAW(16) NULL, @@ -218,12 +219,12 @@ CREATE TABLE "Driver" "primaryKey" RAW(16) NOT NULL, - "Name" NVARCHAR2(255) NULL, - "CarCount" NUMBER(10) NULL, "Documents" NUMBER(1) NULL, + "Name" NVARCHAR2(255) NULL, + PRIMARY KEY ("primaryKey") ) ; @@ -256,43 +257,6 @@ CREATE TABLE "Журнал" ) ; -CREATE TABLE "Медведь" -( - - "primaryKey" RAW(16) NOT NULL, - - "ПолеБС" NVARCHAR2(255) NULL, - - "ПорядковыйНомер" NUMBER(10) NULL, - - "Вес" NUMBER(10) NULL, - - "ЦветГлаз" NVARCHAR2(255) NULL, - - "Пол" NVARCHAR2(9) NULL, - - "ДатаРождения" DATE NULL, - - "CreateTime" DATE NULL, - - "Creator" NVARCHAR2(255) NULL, - - "EditTime" DATE NULL, - - "Editor" NVARCHAR2(255) NULL, - - "ЛесОбитания" RAW(16) NULL, - - "Папа" RAW(16) NULL, - - "Страна" RAW(16) NULL, - - "Мама" RAW(16) NULL, - - PRIMARY KEY ("primaryKey") -) ; - - CREATE TABLE "TestMaster" ( @@ -337,18 +301,18 @@ CREATE TABLE "LegoBlock" "primaryKey" RAW(16) NOT NULL, - "Width" NUMBER(10) NULL, - - "Height" NUMBER(10) NULL, + "Configuration" NVARCHAR2(255) NULL, "Depth" NUMBER(10) NULL, - "Configuration" NVARCHAR2(255) NULL, + "Height" NUMBER(10) NULL, - "Name" NVARCHAR2(255) NULL, + "Width" NUMBER(10) NULL, "BlockId" NUMBER(10) NULL, + "Name" NVARCHAR2(255) NULL, + "Material" RAW(16) NULL, "Color" RAW(16) NULL, @@ -357,42 +321,15 @@ CREATE TABLE "LegoBlock" ) ; -CREATE TABLE "Берлога" -( - - "primaryKey" RAW(16) NOT NULL, - - "ПолеБС" NVARCHAR2(255) NULL, - - "Наименование" NVARCHAR2(255) NULL, - - "Комфортность" NUMBER(10) NULL, - - "Заброшена" NUMBER(1) NULL, - - "Сертификат" CLOB NULL, - - "CertString" CLOB NULL, - - "ЛесРасположения" RAW(16) NULL, - - "ДляКакойПороды" RAW(16) NULL, - - "Медведь" RAW(16) NOT NULL, - - PRIMARY KEY ("primaryKey") -) ; - - CREATE TABLE "LegoBlockColor" ( "primaryKey" RAW(16) NOT NULL, - "Name" NVARCHAR2(255) NULL, - "ColorNumber" NUMBER(10) NULL, + "Name" NVARCHAR2(255) NULL, + PRIMARY KEY ("primaryKey") ) ; @@ -413,10 +350,10 @@ CREATE TABLE "Котенок" "primaryKey" RAW(16) NOT NULL, - "КличкаКотенка" NVARCHAR2(255) NULL, - "Глупость" NUMBER(10) NULL, + "КличкаКотенка" NVARCHAR2(255) NULL, + "Кошка_m0" RAW(16) NOT NULL, PRIMARY KEY ("primaryKey") @@ -466,23 +403,6 @@ CREATE TABLE "DetailsClass1" ) ; -CREATE TABLE "Car" -( - - "primaryKey" RAW(16) NOT NULL, - - "Number" NVARCHAR2(255) NULL, - - "Model" NVARCHAR2(255) NULL, - - "TipCar" NVARCHAR2(9) NULL, - - "driver" RAW(16) NOT NULL, - - PRIMARY KEY ("primaryKey") -) ; - - CREATE TABLE "LegoBlockCustomPanel" ( @@ -505,10 +425,10 @@ CREATE TABLE "ТипЛапы" "primaryKey" RAW(16) NOT NULL, - "Название" NVARCHAR2(255) NULL, - "Актуально" NUMBER(1) NULL, + "Название" NVARCHAR2(255) NULL, + PRIMARY KEY ("primaryKey") ) ; @@ -529,10 +449,10 @@ CREATE TABLE "LegoPanelAngle" "primaryKey" RAW(16) NOT NULL, - "Name" NVARCHAR2(255) NULL, - "Angle" NUMBER(10) NULL, + "Name" NVARCHAR2(255) NULL, + PRIMARY KEY ("primaryKey") ) ; @@ -627,10 +547,10 @@ CREATE TABLE "ТипПороды" "primaryKey" RAW(16) NOT NULL, - "Название" NVARCHAR2(255) NULL, - "ДатаРегистрации" DATE NULL, + "Название" NVARCHAR2(255) NULL, + PRIMARY KEY ("primaryKey") ) ; @@ -640,10 +560,10 @@ CREATE TABLE "LegoBlockTopPanel" "primaryKey" RAW(16) NOT NULL, - "WidthCount" NUMBER(10) NULL, - "HeightCount" NUMBER(10) NULL, + "WidthCount" NUMBER(10) NULL, + "SocketStandard" RAW(16) NULL, "Block" RAW(16) NOT NULL, @@ -717,10 +637,10 @@ CREATE TABLE "LegoDevice" "Electricity" NUMBER(1) NULL, - "Name" NVARCHAR2(255) NULL, - "BlockId" NUMBER(10) NULL, + "Name" NVARCHAR2(255) NULL, + "Color" RAW(16) NULL, PRIMARY KEY ("primaryKey") @@ -738,10 +658,10 @@ CREATE TABLE "Наследник" "Свойство2" NUMBER(10) NULL, - "Master" RAW(16) NULL, - "Мастер" RAW(16) NULL, + "Master" RAW(16) NULL, + PRIMARY KEY ("primaryKey") ) ; @@ -751,10 +671,10 @@ CREATE TABLE "LegoBlockBottomPanel" "primaryKey" RAW(16) NOT NULL, - "WidthCount" NUMBER(10) NULL, - "HeightCount" NUMBER(10) NULL, + "WidthCount" NUMBER(10) NULL, + "Block" RAW(16) NOT NULL, PRIMARY KEY ("primaryKey") @@ -768,55 +688,136 @@ CREATE TABLE "ДочернийКласс" "ChildProperty" NVARCHAR2(255) NULL, - "PropertyGeography" CLOB NULL, - - "PropertyEnum" NVARCHAR2(6) NULL, - "PropertyBool" NUMBER(1) NULL, - "PropertyInt" NUMBER(10) NULL, - "PropertyDateTime" DATE NULL, - "PropertyString" NVARCHAR2(255) NULL, + "PropertyDecimal" NUMBER(38) NULL, + + "PropertyDouble" FLOAT(126) NULL, + + "PropertyEnum" NVARCHAR2(6) NULL, "PropertyFloat" FLOAT(53) NULL, - "PropertyDouble" FLOAT(126) NULL, + "PropertyGeography" CLOB NULL, - "PropertyDecimal" NUMBER(38) NULL, + "PropertyInt" NUMBER(10) NULL, - "PropertySystemNullableDateTime" DATE NULL, + "PropertyStormnetBlob" CLOB NULL, - "PropertySystemNullableInt" NUMBER(10) NULL, + "PropertyStormnetContact" CLOB NULL, - "PropertySystemNullableGuid" RAW(16) NULL, + "PropertyStormnetEvent" CLOB NULL, - "PropertySystemNullableDecimal" NUMBER(38) NULL, + "PropertyStormnetFile" CLOB NULL, - "PropStormnetNullableDateTime" DATE NULL, + "PropertyStormnetGeoData" CLOB NULL, - "PropertyStormnetNullableInt" NUMBER(10) NULL, + "PropertyStormnetImage" CLOB NULL, "PropertyStormnetKeyGuid" RAW(16) NULL, + "PropStormnetNullableDateTime" DATE NULL, + "PropStormnetNullableDecimal" NUMBER(38) NULL, + "PropertyStormnetNullableInt" NUMBER(10) NULL, + "PropertyStormnetPartliedDate" NVARCHAR2(255) NULL, - "PropertyStormnetContact" CLOB NULL, + "PropertyStormnetWebFile" CLOB NULL, - "PropertyStormnetBlob" CLOB NULL, + "PropertyString" NVARCHAR2(255) NULL, - "PropertyStormnetEvent" CLOB NULL, + "PropertySystemNullableDateTime" DATE NULL, - "PropertyStormnetGeoData" CLOB NULL, + "PropertySystemNullableDecimal" NUMBER(38) NULL, - "PropertyStormnetImage" CLOB NULL, + "PropertySystemNullableGuid" RAW(16) NULL, - "PropertyStormnetWebFile" CLOB NULL, + "PropertySystemNullableInt" NUMBER(10) NULL, - "PropertyStormnetFile" CLOB NULL, + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "Медведь" +( + + "primaryKey" RAW(16) NOT NULL, + + "Вес" NUMBER(10) NULL, + + "ДатаРождения" DATE NULL, + + "Пол" NVARCHAR2(9) NULL, + + "ПолеБС" NVARCHAR2(255) NULL, + + "ПорядковыйНомер" NUMBER(10) NULL, + + "ЦветГлаз" NVARCHAR2(255) NULL, + + "CreateTime" DATE NULL, + + "Creator" NVARCHAR2(255) NULL, + + "Editor" NVARCHAR2(255) NULL, + + "EditTime" DATE NULL, + + "ЛесОбитания" RAW(16) NULL, + + "Мама" RAW(16) NULL, + + "Папа" RAW(16) NULL, + + "Страна" RAW(16) NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "Берлога" +( + + "primaryKey" RAW(16) NOT NULL, + + "Заброшена" NUMBER(1) NULL, + + "Комфортность" NUMBER(10) NULL, + + "Наименование" NVARCHAR2(255) NULL, + + "ПолеБС" NVARCHAR2(255) NULL, + + "Сертификат" CLOB NULL, + + "CertString" CLOB NULL, + + "ЛесРасположения" RAW(16) NULL, + + "ДляКакойПороды" RAW(16) NULL, + + "Медведь" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "Car" +( + + "primaryKey" RAW(16) NOT NULL, + + "Model" NVARCHAR2(255) NULL, + + "Number" NVARCHAR2(255) NULL, + + "TipCar" NVARCHAR2(9) NULL, + + "driver" RAW(16) NOT NULL, PRIMARY KEY ("primaryKey") ) ; @@ -836,28 +837,29 @@ CREATE TABLE "Перелом" PRIMARY KEY ("primaryKey") ) ; + CREATE TABLE "Лапа" ( "primaryKey" RAW(16) NOT NULL, - "Цвет" NVARCHAR2(255) NULL, - - "Размер" NUMBER(10) NULL, + "БылиЛиПереломы" NUMBER(1) NULL, "ДатаРождения" DATE NULL, - "БылиЛиПереломы" NUMBER(1) NULL, + "Номер" NUMBER(10) NULL, - "Сторона" NVARCHAR2(11) NULL, + "Размер" NUMBER(10) NULL, - "Номер" NUMBER(10) NULL, + "РазмерDecimal" NUMBER(38) NULL, "РазмерDouble" FLOAT(126) NULL, "РазмерFloat" FLOAT(53) NULL, - "РазмерDecimal" NUMBER(38) NULL, + "Сторона" NVARCHAR2(11) NULL, + + "Цвет" NVARCHAR2(255) NULL, "ТипЛапы_m0" RAW(16) NULL, @@ -872,25 +874,151 @@ CREATE TABLE "Кошка" "primaryKey" RAW(16) NOT NULL, - "Кличка" NVARCHAR2(255) NULL, + "Агрессивная" NUMBER(1) NULL, "ДатаРождения" DATE NULL, - "Тип" NVARCHAR2(11) NULL, - - "ПородаСтрокой" NVARCHAR2(255) NULL, - "Агрессивная" NUMBER(1) NULL, + "Кличка" NVARCHAR2(255) NULL, "УсыСлева" NUMBER(10) NULL, "УсыСправа" NUMBER(10) NULL, + "ПородаСтрокой" NVARCHAR2(255) NULL, + + "Тип" NVARCHAR2(11) NULL, + "Порода_m0" RAW(16) NOT NULL, PRIMARY KEY ("primaryKey") ) ; +CREATE TABLE "DetailAndMaster" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "Agregator" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "TestConfiguration" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "TestClass" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "FirstLevel" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "ThirdLevel" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "TestClass" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "SecondLevel1" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "FirstLevel" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "FirstLevel" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "TestConfiguration" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "SecondLevel2" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "SecondLevel1_m0" RAW(16) NULL, + + "SecondLevel1_m1" RAW(16) NULL, + + "FirstLevel" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "TestAssociation" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name2" NVARCHAR2(255) NULL, + + "Name" NVARCHAR2(255) NULL, + + "SecondLevel1_m0" RAW(16) NULL, + + "SecondLevel1_m1" RAW(16) NULL, + + "FirstLevel" RAW(16) NOT NULL, + + PRIMARY KEY ("primaryKey") +) ; + + +CREATE TABLE "AgregatorSameMD" +( + + "primaryKey" RAW(16) NOT NULL, + + "Name" NVARCHAR2(255) NULL, + + "Master" RAW(16) NULL, + + PRIMARY KEY ("primaryKey") +) ; + + CREATE TABLE "STORMNETLOCKDATA" ( @@ -1240,7 +1368,6 @@ CREATE INDEX "TestDetailWithCicle_ITest_3425" on "TestDetailWithCicle" ("TestMas ALTER TABLE "Детейл" ADD CONSTRAINT "Детейл_FБазов_7676" FOREIGN KEY ("БазовыйКласс_m0") REFERENCES "БазовыйКласс" ("primaryKey"); - CREATE INDEX "Детейл_IБазов_4616" on "Детейл" ("БазовыйКласс_m0"); ALTER TABLE "Детейл" @@ -1258,26 +1385,6 @@ ALTER TABLE "Журнал" CREATE INDEX "Журнал_IБибли_1176" on "Журнал" ("Библиотека2"); -ALTER TABLE "Медведь" - ADD CONSTRAINT "Медведь_FЛес_0" FOREIGN KEY ("ЛесОбитания") REFERENCES "Лес" ("primaryKey"); - -CREATE INDEX "Медведь_IЛесО_5757" on "Медведь" ("ЛесОбитания"); - -ALTER TABLE "Медведь" - ADD CONSTRAINT "Медведь_FМедв_4334" FOREIGN KEY ("Папа") REFERENCES "Медведь" ("primaryKey"); - -CREATE INDEX "Медведь_IПапа" on "Медведь" ("Папа"); - -ALTER TABLE "Медведь" - ADD CONSTRAINT "Медведь_FСтрана_0" FOREIGN KEY ("Страна") REFERENCES "Страна" ("primaryKey"); - -CREATE INDEX "Медведь_IСтрана" on "Медведь" ("Страна"); - -ALTER TABLE "Медведь" - ADD CONSTRAINT "Медведь_FМедв_4335" FOREIGN KEY ("Мама") REFERENCES "Медведь" ("primaryKey"); - -CREATE INDEX "Медведь_IМама" on "Медведь" ("Мама"); - ALTER TABLE "MainClass" ADD CONSTRAINT "MainClass_FAgrClass1_0" FOREIGN KEY ("AgrClass1") REFERENCES "AgrClass1" ("primaryKey"); @@ -1303,21 +1410,6 @@ ALTER TABLE "LegoBlock" CREATE INDEX "LegoBlock_IColor" on "LegoBlock" ("Color"); -ALTER TABLE "Берлога" - ADD CONSTRAINT "Берлога_FЛес_0" FOREIGN KEY ("ЛесРасположения") REFERENCES "Лес" ("primaryKey"); - -CREATE INDEX "Берлога_IЛесР_1411" on "Берлога" ("ЛесРасположения"); - -ALTER TABLE "Берлога" - ADD CONSTRAINT "Берлога_FПорода_0" FOREIGN KEY ("ДляКакойПороды") REFERENCES "Порода" ("primaryKey"); - -CREATE INDEX "Берлога_IДляК_2329" on "Берлога" ("ДляКакойПороды"); - -ALTER TABLE "Берлога" - ADD CONSTRAINT "Берлога_FМедв_5600" FOREIGN KEY ("Медведь") REFERENCES "Медведь" ("primaryKey"); - -CREATE INDEX "Берлога_IМедведь" on "Берлога" ("Медведь"); - ALTER TABLE "Котенок" ADD CONSTRAINT "Котенок_FКошка_0" FOREIGN KEY ("Кошка_m0") REFERENCES "Кошка" ("primaryKey"); @@ -1343,11 +1435,6 @@ ALTER TABLE "DetailsClass1" CREATE INDEX "DetailsClass1_IAgrClass1" on "DetailsClass1" ("AgrClass1"); -ALTER TABLE "Car" - ADD CONSTRAINT "Car_FDriver_0" FOREIGN KEY ("driver") REFERENCES "Driver" ("primaryKey"); - -CREATE INDEX "Car_Idriver" on "Car" ("driver"); - ALTER TABLE "LegoBlockCustomPanel" ADD CONSTRAINT "LegoBlockCustomPanel_FLeg_5205" FOREIGN KEY ("PanelAngle") REFERENCES "LegoPanelAngle" ("primaryKey"); @@ -1383,7 +1470,6 @@ ALTER TABLE "LegoBlockTopPanel" CREATE INDEX "LegoBlockTopPanel_IBlock" on "LegoBlockTopPanel" ("Block"); - ALTER TABLE "ДетейлНаследник" ADD CONSTRAINT "ДетейлНаслед_2684" FOREIGN KEY ("БазовыйКласс_m0") REFERENCES "БазовыйКласс" ("primaryKey"); @@ -1415,20 +1501,60 @@ ALTER TABLE "LegoDevice" CREATE INDEX "LegoDevice_IColor" on "LegoDevice" ("Color"); ALTER TABLE "Наследник" - ADD CONSTRAINT "Наследник_FMaster_0" FOREIGN KEY ("Master") REFERENCES "Master" ("primaryKey"); + ADD CONSTRAINT "Наследник_FМас_278" FOREIGN KEY ("Мастер") REFERENCES "Мастер" ("primaryKey"); -CREATE INDEX "Наследник_IMaster" on "Наследник" ("Master"); +CREATE INDEX "Наследник_IМа_7239" on "Наследник" ("Мастер"); ALTER TABLE "Наследник" - ADD CONSTRAINT "Наследник_FМас_278" FOREIGN KEY ("Мастер") REFERENCES "Мастер" ("primaryKey"); + ADD CONSTRAINT "Наследник_FMaster_0" FOREIGN KEY ("Master") REFERENCES "Master" ("primaryKey"); -CREATE INDEX "Наследник_IМа_7239" on "Наследник" ("Мастер"); +CREATE INDEX "Наследник_IMaster" on "Наследник" ("Master"); ALTER TABLE "LegoBlockBottomPanel" ADD CONSTRAINT "LegoBlockBottomPanel_FLeg_6473" FOREIGN KEY ("Block") REFERENCES "LegoBlock" ("primaryKey"); CREATE INDEX "LegoBlockBottomPanel_IBlock" on "LegoBlockBottomPanel" ("Block"); +ALTER TABLE "Медведь" + ADD CONSTRAINT "Медведь_FЛес_0" FOREIGN KEY ("ЛесОбитания") REFERENCES "Лес" ("primaryKey"); + +CREATE INDEX "Медведь_IЛесО_5757" on "Медведь" ("ЛесОбитания"); + +ALTER TABLE "Медведь" + ADD CONSTRAINT "Медведь_FМедв_4334" FOREIGN KEY ("Мама") REFERENCES "Медведь" ("primaryKey"); + +CREATE INDEX "Медведь_IМама" on "Медведь" ("Мама"); + +ALTER TABLE "Медведь" + ADD CONSTRAINT "Медведь_FМедв_4335" FOREIGN KEY ("Папа") REFERENCES "Медведь" ("primaryKey"); + +CREATE INDEX "Медведь_IПапа" on "Медведь" ("Папа"); + +ALTER TABLE "Медведь" + ADD CONSTRAINT "Медведь_FСтрана_0" FOREIGN KEY ("Страна") REFERENCES "Страна" ("primaryKey"); + +CREATE INDEX "Медведь_IСтрана" on "Медведь" ("Страна"); + +ALTER TABLE "Берлога" + ADD CONSTRAINT "Берлога_FЛес_0" FOREIGN KEY ("ЛесРасположения") REFERENCES "Лес" ("primaryKey"); + +CREATE INDEX "Берлога_IЛесР_1411" on "Берлога" ("ЛесРасположения"); + +ALTER TABLE "Берлога" + ADD CONSTRAINT "Берлога_FПорода_0" FOREIGN KEY ("ДляКакойПороды") REFERENCES "Порода" ("primaryKey"); + +CREATE INDEX "Берлога_IДляК_2329" on "Берлога" ("ДляКакойПороды"); + +ALTER TABLE "Берлога" + ADD CONSTRAINT "Берлога_FМедв_5600" FOREIGN KEY ("Медведь") REFERENCES "Медведь" ("primaryKey"); + +CREATE INDEX "Берлога_IМедведь" on "Берлога" ("Медведь"); + +ALTER TABLE "Car" + ADD CONSTRAINT "Car_FDriver_0" FOREIGN KEY ("driver") REFERENCES "Driver" ("primaryKey"); + +CREATE INDEX "Car_Idriver" on "Car" ("driver"); + ALTER TABLE "Перелом" ADD CONSTRAINT "Перелом_FЛапа_0" FOREIGN KEY ("Лапа_m0") REFERENCES "Лапа" ("primaryKey"); @@ -1449,6 +1575,66 @@ ALTER TABLE "Кошка" CREATE INDEX "Кошка_IПорода_m0" on "Кошка" ("Порода_m0"); +ALTER TABLE "DetailAndMaster" + ADD CONSTRAINT "DetailAndMaster_FAgregato_2594" FOREIGN KEY ("Agregator") REFERENCES "AgregatorSameMD" ("primaryKey"); + +CREATE INDEX "DetailAndMaster_IAgregator" on "DetailAndMaster" ("Agregator"); + +ALTER TABLE "TestClass" + ADD CONSTRAINT "TestClass_FFirstLevel_0" FOREIGN KEY ("FirstLevel") REFERENCES "FirstLevel" ("primaryKey"); + +CREATE INDEX "TestClass_IFirstLevel" on "TestClass" ("FirstLevel"); + +ALTER TABLE "ThirdLevel" + ADD CONSTRAINT "ThirdLevel_FTestClass_0" FOREIGN KEY ("TestClass") REFERENCES "TestClass" ("primaryKey"); + +CREATE INDEX "ThirdLevel_ITestClass" on "ThirdLevel" ("TestClass"); + +ALTER TABLE "SecondLevel1" + ADD CONSTRAINT "SecondLevel1_FFirstLevel_0" FOREIGN KEY ("FirstLevel") REFERENCES "FirstLevel" ("primaryKey"); + +CREATE INDEX "SecondLevel1_IFirstLevel" on "SecondLevel1" ("FirstLevel"); + +ALTER TABLE "FirstLevel" + ADD CONSTRAINT "FirstLevel_FTestConfigura_1288" FOREIGN KEY ("TestConfiguration") REFERENCES "TestConfiguration" ("primaryKey"); + +CREATE INDEX "FirstLevel_ITestConfiguration" on "FirstLevel" ("TestConfiguration"); + +ALTER TABLE "SecondLevel2" + ADD CONSTRAINT "SecondLevel2_FSecondLevel1_0" FOREIGN KEY ("SecondLevel1_m0") REFERENCES "SecondLevel1" ("primaryKey"); + +CREATE INDEX "SecondLevel2_ISecondLevel1_m0" on "SecondLevel2" ("SecondLevel1_m0"); + +ALTER TABLE "SecondLevel2" + ADD CONSTRAINT "SecondLevel2_FTestClass_0" FOREIGN KEY ("SecondLevel1_m1") REFERENCES "TestClass" ("primaryKey"); + +CREATE INDEX "SecondLevel2_ISecondLevel1_m1" on "SecondLevel2" ("SecondLevel1_m1"); + +ALTER TABLE "SecondLevel2" + ADD CONSTRAINT "SecondLevel2_FFirstLevel_0" FOREIGN KEY ("FirstLevel") REFERENCES "FirstLevel" ("primaryKey"); + +CREATE INDEX "SecondLevel2_IFirstLevel" on "SecondLevel2" ("FirstLevel"); + +ALTER TABLE "TestAssociation" + ADD CONSTRAINT "TestAssociation_FSecondLe_2905" FOREIGN KEY ("SecondLevel1_m0") REFERENCES "SecondLevel1" ("primaryKey"); + +CREATE INDEX "TestAssociation_ISecondLe_6355" on "TestAssociation" ("SecondLevel1_m0"); + +ALTER TABLE "TestAssociation" + ADD CONSTRAINT "TestAssociation_FTestClass_0" FOREIGN KEY ("SecondLevel1_m1") REFERENCES "TestClass" ("primaryKey"); + +CREATE INDEX "TestAssociation_ISecondLe_6356" on "TestAssociation" ("SecondLevel1_m1"); + +ALTER TABLE "TestAssociation" + ADD CONSTRAINT "TestAssociation_FFirstLevel_0" FOREIGN KEY ("FirstLevel") REFERENCES "FirstLevel" ("primaryKey"); + +CREATE INDEX "TestAssociation_IFirstLevel" on "TestAssociation" ("FirstLevel"); + +ALTER TABLE "AgregatorSameMD" + ADD CONSTRAINT "AgregatorSameMD_FDetailAn_6200" FOREIGN KEY ("Master") REFERENCES "DetailAndMaster" ("primaryKey"); + +CREATE INDEX "AgregatorSameMD_IMaster" on "AgregatorSameMD" ("Master"); + ALTER TABLE "STORMWEBSEARCH" ADD CONSTRAINT "STORMWEBSEARCH_FSTORMFILT_6521" FOREIGN KEY ("FilterSetting_m0") REFERENCES "STORMFILTERSETTING" ("primaryKey"); diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/PostgreSql.create.sql b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/PostgreSql.create.sql index c1c08a94..be8bf1fe 100644 --- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/PostgreSql.create.sql +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/SqlScripts/PostgreSql.create.sql @@ -3,43 +3,33 @@ -CREATE TABLE Лес ( - primaryKey UUID NOT NULL, - Название VARCHAR(255) NULL, - Площадь INT NULL, - Заповедник BOOLEAN NULL, - ДатаПослОсмотра TIMESTAMP(3) NULL, - Страна UUID NULL, - PRIMARY KEY (primaryKey)); - - CREATE TABLE КлассСМножТипов ( primaryKey UUID NOT NULL, - PropertyGeography GEOMETRY NULL, - PropertyEnum VARCHAR(6) NULL, PropertyBool BOOLEAN NULL, - PropertyInt INT NULL, PropertyDateTime TIMESTAMP(3) NULL, - PropertyString VARCHAR(255) NULL, - PropertyFloat REAL NULL, - PropertyDouble DOUBLE PRECISION NULL, PropertyDecimal DECIMAL NULL, - PropertySystemNullableDateTime TIMESTAMP(3) NULL, - PropertySystemNullableInt INT NULL, - PropertySystemNullableGuid UUID NULL, - PropertySystemNullableDecimal DECIMAL NULL, - PropStormnetNullableDateTime TIMESTAMP(3) NULL, - PropertyStormnetNullableInt INT NULL, - PropertyStormnetKeyGuid UUID NULL, - PropStormnetNullableDecimal DECIMAL NULL, - PropertyStormnetPartliedDate VARCHAR(255) NULL, - PropertyStormnetContact TEXT NULL, + PropertyDouble DOUBLE PRECISION NULL, + PropertyEnum VARCHAR(6) NULL, + PropertyFloat REAL NULL, + PropertyGeography GEOMETRY NULL, + PropertyInt INT NULL, PropertyStormnetBlob TEXT NULL, + PropertyStormnetContact TEXT NULL, PropertyStormnetEvent TEXT NULL, + PropertyStormnetFile TEXT NULL, PropertyStormnetGeoData TEXT NULL, PropertyStormnetImage TEXT NULL, + PropertyStormnetKeyGuid UUID NULL, + PropStormnetNullableDateTime TIMESTAMP(3) NULL, + PropStormnetNullableDecimal DECIMAL NULL, + PropertyStormnetNullableInt INT NULL, + PropertyStormnetPartliedDate VARCHAR(255) NULL, PropertyStormnetWebFile TEXT NULL, - PropertyStormnetFile TEXT NULL, + PropertyString VARCHAR(255) NULL, + PropertySystemNullableDateTime TIMESTAMP(3) NULL, + PropertySystemNullableDecimal DECIMAL NULL, + PropertySystemNullableGuid UUID NULL, + PropertySystemNullableInt INT NULL, PRIMARY KEY (primaryKey)); @@ -49,12 +39,22 @@ CREATE TABLE Master ( PRIMARY KEY (primaryKey)); +CREATE TABLE Лес ( + primaryKey UUID NOT NULL, + ДатаПослОсмотра TIMESTAMP(3) NULL, + Заповедник BOOLEAN NULL, + Название VARCHAR(255) NULL, + Площадь INT NULL, + Страна UUID NULL, + PRIMARY KEY (primaryKey)); + + CREATE TABLE LegoPatent ( primaryKey UUID NOT NULL, - Name VARCHAR(255) NULL, - Date TIMESTAMP(3) NULL, Authors VARCHAR(255) NULL, + Date TIMESTAMP(3) NULL, Description VARCHAR(255) NULL, + Name VARCHAR(255) NULL, LegoBlock UUID NULL, LegoDevice UUID NULL, PRIMARY KEY (primaryKey)); @@ -117,9 +117,9 @@ CREATE TABLE Детейл ( CREATE TABLE Driver ( primaryKey UUID NOT NULL, - Name VARCHAR(255) NULL, CarCount INT NULL, Documents BOOLEAN NULL, + Name VARCHAR(255) NULL, PRIMARY KEY (primaryKey)); @@ -138,25 +138,6 @@ CREATE TABLE Журнал ( PRIMARY KEY (primaryKey)); -CREATE TABLE Медведь ( - primaryKey UUID NOT NULL, - ПолеБС VARCHAR(255) NULL, - ПорядковыйНомер INT NULL, - Вес INT NULL, - ЦветГлаз VARCHAR(255) NULL, - Пол VARCHAR(9) NULL, - ДатаРождения TIMESTAMP(3) NULL, - CreateTime TIMESTAMP(3) NULL, - Creator VARCHAR(255) NULL, - EditTime TIMESTAMP(3) NULL, - Editor VARCHAR(255) NULL, - ЛесОбитания UUID NULL, - Папа UUID NULL, - Страна UUID NULL, - Мама UUID NULL, - PRIMARY KEY (primaryKey)); - - CREATE TABLE TestMaster ( primaryKey UUID NOT NULL, TestMasterName VARCHAR(255) NULL, @@ -180,35 +161,21 @@ CREATE TABLE Порода ( CREATE TABLE LegoBlock ( primaryKey UUID NOT NULL, - Width INT NULL, - Height INT NULL, - Depth INT NULL, Configuration VARCHAR(255) NULL, - Name VARCHAR(255) NULL, + Depth INT NULL, + Height INT NULL, + Width INT NULL, BlockId INT NULL, + Name VARCHAR(255) NULL, Material UUID NULL, Color UUID NULL, PRIMARY KEY (primaryKey)); -CREATE TABLE Берлога ( - primaryKey UUID NOT NULL, - ПолеБС VARCHAR(255) NULL, - Наименование VARCHAR(255) NULL, - Комфортность INT NULL, - Заброшена BOOLEAN NULL, - Сертификат TEXT NULL, - CertString TEXT NULL, - ЛесРасположения UUID NULL, - ДляКакойПороды UUID NULL, - Медведь UUID NOT NULL, - PRIMARY KEY (primaryKey)); - - CREATE TABLE LegoBlockColor ( primaryKey UUID NOT NULL, - Name VARCHAR(255) NULL, ColorNumber INT NULL, + Name VARCHAR(255) NULL, PRIMARY KEY (primaryKey)); @@ -220,8 +187,8 @@ CREATE TABLE ПоставщикКниг ( CREATE TABLE Котенок ( primaryKey UUID NOT NULL, - КличкаКотенка VARCHAR(255) NULL, Глупость INT NULL, + КличкаКотенка VARCHAR(255) NULL, Кошка_m0 UUID NOT NULL, PRIMARY KEY (primaryKey)); @@ -249,15 +216,6 @@ CREATE TABLE DetailsClass1 ( PRIMARY KEY (primaryKey)); -CREATE TABLE Car ( - primaryKey UUID NOT NULL, - Number VARCHAR(255) NULL, - Model VARCHAR(255) NULL, - TipCar VARCHAR(9) NULL, - driver UUID NOT NULL, - PRIMARY KEY (primaryKey)); - - CREATE TABLE LegoBlockCustomPanel ( primaryKey UUID NOT NULL, Orientation VARCHAR(255) NULL, @@ -269,8 +227,8 @@ CREATE TABLE LegoBlockCustomPanel ( CREATE TABLE ТипЛапы ( primaryKey UUID NOT NULL, - Название VARCHAR(255) NULL, Актуально BOOLEAN NULL, + Название VARCHAR(255) NULL, PRIMARY KEY (primaryKey)); @@ -282,8 +240,8 @@ CREATE TABLE AgrClass1 ( CREATE TABLE LegoPanelAngle ( primaryKey UUID NOT NULL, - Name VARCHAR(255) NULL, Angle INT NULL, + Name VARCHAR(255) NULL, PRIMARY KEY (primaryKey)); @@ -335,15 +293,15 @@ CREATE TABLE AgrClass2 ( CREATE TABLE ТипПороды ( primaryKey UUID NOT NULL, - Название VARCHAR(255) NULL, ДатаРегистрации TIMESTAMP(3) NULL, + Название VARCHAR(255) NULL, PRIMARY KEY (primaryKey)); CREATE TABLE LegoBlockTopPanel ( primaryKey UUID NOT NULL, - WidthCount INT NULL, HeightCount INT NULL, + WidthCount INT NULL, SocketStandard UUID NULL, Block UUID NOT NULL, PRIMARY KEY (primaryKey)); @@ -383,8 +341,8 @@ CREATE TABLE LegoDevice ( primaryKey UUID NOT NULL, Description VARCHAR(255) NULL, Electricity BOOLEAN NULL, - Name VARCHAR(255) NULL, BlockId INT NULL, + Name VARCHAR(255) NULL, Color UUID NULL, PRIMARY KEY (primaryKey)); @@ -394,15 +352,15 @@ CREATE TABLE Наследник ( Свойство DOUBLE PRECISION NULL, Свойство1 VARCHAR(255) NULL, Свойство2 INT NULL, - Master UUID NULL, Мастер UUID NULL, + Master UUID NULL, PRIMARY KEY (primaryKey)); CREATE TABLE LegoBlockBottomPanel ( primaryKey UUID NOT NULL, - WidthCount INT NULL, HeightCount INT NULL, + WidthCount INT NULL, Block UUID NOT NULL, PRIMARY KEY (primaryKey)); @@ -410,31 +368,73 @@ CREATE TABLE LegoBlockBottomPanel ( CREATE TABLE ДочернийКласс ( primaryKey UUID NOT NULL, ChildProperty VARCHAR(255) NULL, - PropertyGeography GEOMETRY NULL, - PropertyEnum VARCHAR(6) NULL, PropertyBool BOOLEAN NULL, - PropertyInt INT NULL, PropertyDateTime TIMESTAMP(3) NULL, - PropertyString VARCHAR(255) NULL, - PropertyFloat REAL NULL, - PropertyDouble DOUBLE PRECISION NULL, PropertyDecimal DECIMAL NULL, - PropertySystemNullableDateTime TIMESTAMP(3) NULL, - PropertySystemNullableInt INT NULL, - PropertySystemNullableGuid UUID NULL, - PropertySystemNullableDecimal DECIMAL NULL, - PropStormnetNullableDateTime TIMESTAMP(3) NULL, - PropertyStormnetNullableInt INT NULL, - PropertyStormnetKeyGuid UUID NULL, - PropStormnetNullableDecimal DECIMAL NULL, - PropertyStormnetPartliedDate VARCHAR(255) NULL, - PropertyStormnetContact TEXT NULL, + PropertyDouble DOUBLE PRECISION NULL, + PropertyEnum VARCHAR(6) NULL, + PropertyFloat REAL NULL, + PropertyGeography GEOMETRY NULL, + PropertyInt INT NULL, PropertyStormnetBlob TEXT NULL, + PropertyStormnetContact TEXT NULL, PropertyStormnetEvent TEXT NULL, + PropertyStormnetFile TEXT NULL, PropertyStormnetGeoData TEXT NULL, PropertyStormnetImage TEXT NULL, + PropertyStormnetKeyGuid UUID NULL, + PropStormnetNullableDateTime TIMESTAMP(3) NULL, + PropStormnetNullableDecimal DECIMAL NULL, + PropertyStormnetNullableInt INT NULL, + PropertyStormnetPartliedDate VARCHAR(255) NULL, PropertyStormnetWebFile TEXT NULL, - PropertyStormnetFile TEXT NULL, + PropertyString VARCHAR(255) NULL, + PropertySystemNullableDateTime TIMESTAMP(3) NULL, + PropertySystemNullableDecimal DECIMAL NULL, + PropertySystemNullableGuid UUID NULL, + PropertySystemNullableInt INT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE Медведь ( + primaryKey UUID NOT NULL, + Вес INT NULL, + ДатаРождения TIMESTAMP(3) NULL, + Пол VARCHAR(9) NULL, + ПолеБС VARCHAR(255) NULL, + ПорядковыйНомер INT NULL, + ЦветГлаз VARCHAR(255) NULL, + CreateTime TIMESTAMP(3) NULL, + Creator VARCHAR(255) NULL, + Editor VARCHAR(255) NULL, + EditTime TIMESTAMP(3) NULL, + ЛесОбитания UUID NULL, + Мама UUID NULL, + Папа UUID NULL, + Страна UUID NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE Берлога ( + primaryKey UUID NOT NULL, + Заброшена BOOLEAN NULL, + Комфортность INT NULL, + Наименование VARCHAR(255) NULL, + ПолеБС VARCHAR(255) NULL, + Сертификат TEXT NULL, + CertString TEXT NULL, + ЛесРасположения UUID NULL, + ДляКакойПороды UUID NULL, + Медведь UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE Car ( + primaryKey UUID NOT NULL, + Model VARCHAR(255) NULL, + Number VARCHAR(255) NULL, + TipCar VARCHAR(9) NULL, + driver UUID NOT NULL, PRIMARY KEY (primaryKey)); @@ -448,15 +448,15 @@ CREATE TABLE Перелом ( CREATE TABLE Лапа ( primaryKey UUID NOT NULL, - Цвет VARCHAR(255) NULL, - Размер INT NULL, - ДатаРождения TIMESTAMP(3) NULL, БылиЛиПереломы BOOLEAN NULL, - Сторона VARCHAR(11) NULL, + ДатаРождения TIMESTAMP(3) NULL, Номер INT NULL, + Размер INT NULL, + РазмерDecimal DECIMAL NULL, РазмерDouble DOUBLE PRECISION NULL, РазмерFloat REAL NULL, - РазмерDecimal DECIMAL NULL, + Сторона VARCHAR(11) NULL, + Цвет VARCHAR(255) NULL, ТипЛапы_m0 UUID NULL, Кошка_m0 UUID NOT NULL, PRIMARY KEY (primaryKey)); @@ -464,17 +464,84 @@ CREATE TABLE Лапа ( CREATE TABLE Кошка ( primaryKey UUID NOT NULL, - Кличка VARCHAR(255) NULL, - ДатаРождения TIMESTAMP(3) NULL, - Тип VARCHAR(11) NULL, - ПородаСтрокой VARCHAR(255) NULL, Агрессивная BOOLEAN NULL, + ДатаРождения TIMESTAMP(3) NULL, + Кличка VARCHAR(255) NULL, УсыСлева INT NULL, УсыСправа INT NULL, + ПородаСтрокой VARCHAR(255) NULL, + Тип VARCHAR(11) NULL, Порода_m0 UUID NOT NULL, PRIMARY KEY (primaryKey)); +CREATE TABLE DetailAndMaster ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + Agregator UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE TestConfiguration ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE TestClass ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + FirstLevel UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE ThirdLevel ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + TestClass UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE SecondLevel1 ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + FirstLevel UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE FirstLevel ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + TestConfiguration UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE SecondLevel2 ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + SecondLevel1_m0 UUID NULL, + SecondLevel1_m1 UUID NULL, + FirstLevel UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE TestAssociation ( + primaryKey UUID NOT NULL, + Name2 VARCHAR(255) NULL, + Name VARCHAR(255) NULL, + SecondLevel1_m0 UUID NULL, + SecondLevel1_m1 UUID NULL, + FirstLevel UUID NOT NULL, + PRIMARY KEY (primaryKey)); + + +CREATE TABLE AgregatorSameMD ( + primaryKey UUID NOT NULL, + Name VARCHAR(255) NULL, + Master UUID NULL, + PRIMARY KEY (primaryKey)); + + CREATE TABLE STORMNETLOCKDATA ( LockKey VARCHAR(300) NOT NULL, UserName VARCHAR(300) NOT NULL, @@ -607,10 +674,10 @@ CREATE TABLE STORMAuField ( PRIMARY KEY (primaryKey)); +CREATE INDEX Indexc5f9d71c0704ea7b966afcfdc89dc7eabe2d0c43 on КлассСМножТипов USING gist (PropertyGeography); ALTER TABLE Лес ADD CONSTRAINT FKd3bd1222072f531605e73e66656fe58296c8bfd2 FOREIGN KEY (Страна) REFERENCES Страна; CREATE INDEX Indexd3bd1222072f531605e73e66656fe58296c8bfd2 on Лес (Страна); -CREATE INDEX Indexc5f9d71c0704ea7b966afcfdc89dc7eabe2d0c43 on КлассСМножТипов USING gist (PropertyGeography); ALTER TABLE LegoPatent ADD CONSTRAINT FK849bc80cb1cf2d804429cfd10a756cb914e3fece FOREIGN KEY (LegoBlock) REFERENCES LegoBlock; CREATE INDEX Index849bc80cb1cf2d804429cfd10a756cb914e3fece on LegoPatent (LegoBlock); @@ -642,18 +709,6 @@ CREATE INDEX Index51fce8ede8f7716be28b6975505b1f9e738cc71c on Журнал (Ав ALTER TABLE Журнал ADD CONSTRAINT FK93c8f6bdc15c74cea64c3d56754d8263c4f0ceb5 FOREIGN KEY (Библиотека2) REFERENCES Библиотека; CREATE INDEX Index93c8f6bdc15c74cea64c3d56754d8263c4f0ceb5 on Журнал (Библиотека2); - ALTER TABLE Медведь ADD CONSTRAINT FK93be01a32cae64dc4b18705ade6683f41a32c367 FOREIGN KEY (ЛесОбитания) REFERENCES Лес; -CREATE INDEX Index93be01a32cae64dc4b18705ade6683f41a32c367 on Медведь (ЛесОбитания); - - ALTER TABLE Медведь ADD CONSTRAINT FK0ca403a899ac5a709a19bbb9ada47b0060e5b819 FOREIGN KEY (Папа) REFERENCES Медведь; -CREATE INDEX Index0ca403a899ac5a709a19bbb9ada47b0060e5b819 on Медведь (Папа); - - ALTER TABLE Медведь ADD CONSTRAINT FK6d8033494746b0bb87ba367c83d273dfa11b8f59 FOREIGN KEY (Страна) REFERENCES Страна; -CREATE INDEX Index6d8033494746b0bb87ba367c83d273dfa11b8f59 on Медведь (Страна); - - ALTER TABLE Медведь ADD CONSTRAINT FK0b9f6ad0caded1971696ef6602e8a2831fa941b1 FOREIGN KEY (Мама) REFERENCES Медведь; -CREATE INDEX Index0b9f6ad0caded1971696ef6602e8a2831fa941b1 on Медведь (Мама); - ALTER TABLE MainClass ADD CONSTRAINT FK685ab69befdffb9de6fa545fb70cd50905f15ac0 FOREIGN KEY (AgrClass1) REFERENCES AgrClass1; CREATE INDEX Index685ab69befdffb9de6fa545fb70cd50905f15ac0 on MainClass (AgrClass1); @@ -669,15 +724,6 @@ CREATE INDEX Index4cfb6296b76f57183c4e2ee17b66be5bed463d0f on LegoBlock (Materia ALTER TABLE LegoBlock ADD CONSTRAINT FK9f2f5e18e6674969f5e82da37bf4b5a2a1d4713a FOREIGN KEY (Color) REFERENCES LegoBlockColor; CREATE INDEX Index9f2f5e18e6674969f5e82da37bf4b5a2a1d4713a on LegoBlock (Color); - ALTER TABLE Берлога ADD CONSTRAINT FKa74603e81cb82d318a92d5d3e374895fe242d80e FOREIGN KEY (ЛесРасположения) REFERENCES Лес; -CREATE INDEX Indexa74603e81cb82d318a92d5d3e374895fe242d80e on Берлога (ЛесРасположения); - - ALTER TABLE Берлога ADD CONSTRAINT FKd55a7fa30b428d1be64b1b8e2ac5b525597ef56b FOREIGN KEY (ДляКакойПороды) REFERENCES Порода; -CREATE INDEX Indexd55a7fa30b428d1be64b1b8e2ac5b525597ef56b on Берлога (ДляКакойПороды); - - ALTER TABLE Берлога ADD CONSTRAINT FK838e30a686c4f1dcfbb02e55d47218e48ddbe7a2 FOREIGN KEY (Медведь) REFERENCES Медведь; -CREATE INDEX Index838e30a686c4f1dcfbb02e55d47218e48ddbe7a2 on Берлога (Медведь); - ALTER TABLE Котенок ADD CONSTRAINT FK79a0f583830fea7f95d716cc96a27d0967a2d537 FOREIGN KEY (Кошка_m0) REFERENCES Кошка; CREATE INDEX Index79a0f583830fea7f95d716cc96a27d0967a2d537 on Котенок (Кошка_m0); @@ -693,9 +739,6 @@ CREATE INDEX Indexfb36ebac9beeb237cccb40b7be9cf2d25e9247b9 on DetailsClass1 (Det ALTER TABLE DetailsClass1 ADD CONSTRAINT FK10455ebe27fd31555ad2502ede3706a815784321 FOREIGN KEY (AgrClass1) REFERENCES AgrClass1; CREATE INDEX Index10455ebe27fd31555ad2502ede3706a815784321 on DetailsClass1 (AgrClass1); - ALTER TABLE Car ADD CONSTRAINT FKe86a1d047f4df342bf39a5af864aec2b40a3547a FOREIGN KEY (driver) REFERENCES Driver; -CREATE INDEX Indexe86a1d047f4df342bf39a5af864aec2b40a3547a on Car (driver); - ALTER TABLE LegoBlockCustomPanel ADD CONSTRAINT FK53e2141b982788b2970c50d23073a5847e47d81c FOREIGN KEY (PanelAngle) REFERENCES LegoPanelAngle; CREATE INDEX Index53e2141b982788b2970c50d23073a5847e47d81c on LegoBlockCustomPanel (PanelAngle); @@ -735,16 +778,40 @@ CREATE INDEX Index84e4d9d5b6adc4bec48541216f15f396dd2b602c on Книга (Биб ALTER TABLE LegoDevice ADD CONSTRAINT FKafee67e1a41c2550c0f3df3724edf1b0be74db9f FOREIGN KEY (Color) REFERENCES LegoBlockColor; CREATE INDEX Indexafee67e1a41c2550c0f3df3724edf1b0be74db9f on LegoDevice (Color); - ALTER TABLE Наследник ADD CONSTRAINT FK0cb9ac2b0e7896223ed63c0c888c23aa86682b1e FOREIGN KEY (Master) REFERENCES Master; -CREATE INDEX Index0cb9ac2b0e7896223ed63c0c888c23aa86682b1e on Наследник (Master); - ALTER TABLE Наследник ADD CONSTRAINT FK28ac1d61524a43a59e67af57a855ad487d1f8141 FOREIGN KEY (Мастер) REFERENCES Мастер; CREATE INDEX Index28ac1d61524a43a59e67af57a855ad487d1f8141 on Наследник (Мастер); + ALTER TABLE Наследник ADD CONSTRAINT FK0cb9ac2b0e7896223ed63c0c888c23aa86682b1e FOREIGN KEY (Master) REFERENCES Master; +CREATE INDEX Index0cb9ac2b0e7896223ed63c0c888c23aa86682b1e on Наследник (Master); + ALTER TABLE LegoBlockBottomPanel ADD CONSTRAINT FKba0e912f138a900a9d416b459d0b38e70871f043 FOREIGN KEY (Block) REFERENCES LegoBlock; CREATE INDEX Indexba0e912f138a900a9d416b459d0b38e70871f043 on LegoBlockBottomPanel (Block); CREATE INDEX Index10d981ac5288ea278311b6a711b43fa954b635a8 on ДочернийКласс USING gist (PropertyGeography); + ALTER TABLE Медведь ADD CONSTRAINT FK93be01a32cae64dc4b18705ade6683f41a32c367 FOREIGN KEY (ЛесОбитания) REFERENCES Лес; +CREATE INDEX Index93be01a32cae64dc4b18705ade6683f41a32c367 on Медведь (ЛесОбитания); + + ALTER TABLE Медведь ADD CONSTRAINT FK0b9f6ad0caded1971696ef6602e8a2831fa941b1 FOREIGN KEY (Мама) REFERENCES Медведь; +CREATE INDEX Index0b9f6ad0caded1971696ef6602e8a2831fa941b1 on Медведь (Мама); + + ALTER TABLE Медведь ADD CONSTRAINT FK0ca403a899ac5a709a19bbb9ada47b0060e5b819 FOREIGN KEY (Папа) REFERENCES Медведь; +CREATE INDEX Index0ca403a899ac5a709a19bbb9ada47b0060e5b819 on Медведь (Папа); + + ALTER TABLE Медведь ADD CONSTRAINT FK6d8033494746b0bb87ba367c83d273dfa11b8f59 FOREIGN KEY (Страна) REFERENCES Страна; +CREATE INDEX Index6d8033494746b0bb87ba367c83d273dfa11b8f59 on Медведь (Страна); + + ALTER TABLE Берлога ADD CONSTRAINT FKa74603e81cb82d318a92d5d3e374895fe242d80e FOREIGN KEY (ЛесРасположения) REFERENCES Лес; +CREATE INDEX Indexa74603e81cb82d318a92d5d3e374895fe242d80e on Берлога (ЛесРасположения); + + ALTER TABLE Берлога ADD CONSTRAINT FKd55a7fa30b428d1be64b1b8e2ac5b525597ef56b FOREIGN KEY (ДляКакойПороды) REFERENCES Порода; +CREATE INDEX Indexd55a7fa30b428d1be64b1b8e2ac5b525597ef56b on Берлога (ДляКакойПороды); + + ALTER TABLE Берлога ADD CONSTRAINT FK838e30a686c4f1dcfbb02e55d47218e48ddbe7a2 FOREIGN KEY (Медведь) REFERENCES Медведь; +CREATE INDEX Index838e30a686c4f1dcfbb02e55d47218e48ddbe7a2 on Берлога (Медведь); + + ALTER TABLE Car ADD CONSTRAINT FKe86a1d047f4df342bf39a5af864aec2b40a3547a FOREIGN KEY (driver) REFERENCES Driver; +CREATE INDEX Indexe86a1d047f4df342bf39a5af864aec2b40a3547a on Car (driver); + ALTER TABLE Перелом ADD CONSTRAINT FK6dee404d2bb9702d8d72537c5ae42a7c97dfb5fa FOREIGN KEY (Лапа_m0) REFERENCES Лапа; CREATE INDEX Index6dee404d2bb9702d8d72537c5ae42a7c97dfb5fa on Перелом (Лапа_m0); @@ -757,6 +824,42 @@ CREATE INDEX Indexd2c2995f4deb3767b25fa4ca17d61bf9bff3d562 on Лапа (Кошк ALTER TABLE Кошка ADD CONSTRAINT FK271599c8f6730bbff77fe5e9bf61dbfd89e661c6 FOREIGN KEY (Порода_m0) REFERENCES Порода; CREATE INDEX Index271599c8f6730bbff77fe5e9bf61dbfd89e661c6 on Кошка (Порода_m0); + ALTER TABLE DetailAndMaster ADD CONSTRAINT FK0c88fee611c8abca27c4c3da5367b44eee5fc8e5 FOREIGN KEY (Agregator) REFERENCES AgregatorSameMD; +CREATE INDEX Index0c88fee611c8abca27c4c3da5367b44eee5fc8e5 on DetailAndMaster (Agregator); + + ALTER TABLE TestClass ADD CONSTRAINT FK19773cb98a250f476592752b07236351a92e0459 FOREIGN KEY (FirstLevel) REFERENCES FirstLevel; +CREATE INDEX Index19773cb98a250f476592752b07236351a92e0459 on TestClass (FirstLevel); + + ALTER TABLE ThirdLevel ADD CONSTRAINT FK984d4e99324a5c45442934f0ab98b220f32de93a FOREIGN KEY (TestClass) REFERENCES TestClass; +CREATE INDEX Index984d4e99324a5c45442934f0ab98b220f32de93a on ThirdLevel (TestClass); + + ALTER TABLE SecondLevel1 ADD CONSTRAINT FKfd7eab05fadb3cdc2d524a4e44a7e9180d6fb17a FOREIGN KEY (FirstLevel) REFERENCES FirstLevel; +CREATE INDEX Indexfd7eab05fadb3cdc2d524a4e44a7e9180d6fb17a on SecondLevel1 (FirstLevel); + + ALTER TABLE FirstLevel ADD CONSTRAINT FK7b6f1cb3f01146be11a3378612a4fb0be742e10d FOREIGN KEY (TestConfiguration) REFERENCES TestConfiguration; +CREATE INDEX Index7b6f1cb3f01146be11a3378612a4fb0be742e10d on FirstLevel (TestConfiguration); + + ALTER TABLE SecondLevel2 ADD CONSTRAINT FK22e45e92a053d7e929e24654ac8c10aba4fa49b0 FOREIGN KEY (SecondLevel1_m0) REFERENCES SecondLevel1; +CREATE INDEX Index22e45e92a053d7e929e24654ac8c10aba4fa49b0 on SecondLevel2 (SecondLevel1_m0); + + ALTER TABLE SecondLevel2 ADD CONSTRAINT FK34d92026b39c8d9b4ae1c6b730803be60ba832af FOREIGN KEY (SecondLevel1_m1) REFERENCES TestClass; +CREATE INDEX Index34d92026b39c8d9b4ae1c6b730803be60ba832af on SecondLevel2 (SecondLevel1_m1); + + ALTER TABLE SecondLevel2 ADD CONSTRAINT FKe2843f3145fc62736d407262ab698b69e37abc7a FOREIGN KEY (FirstLevel) REFERENCES FirstLevel; +CREATE INDEX Indexe2843f3145fc62736d407262ab698b69e37abc7a on SecondLevel2 (FirstLevel); + + ALTER TABLE TestAssociation ADD CONSTRAINT FK75ff68881ab55589c4860bf07c4d70899aeba780 FOREIGN KEY (SecondLevel1_m0) REFERENCES SecondLevel1; +CREATE INDEX Index75ff68881ab55589c4860bf07c4d70899aeba780 on TestAssociation (SecondLevel1_m0); + + ALTER TABLE TestAssociation ADD CONSTRAINT FK33293a87ee605ad37917bdfcc64e848d124c4458 FOREIGN KEY (SecondLevel1_m1) REFERENCES TestClass; +CREATE INDEX Index33293a87ee605ad37917bdfcc64e848d124c4458 on TestAssociation (SecondLevel1_m1); + + ALTER TABLE TestAssociation ADD CONSTRAINT FK2c1bef67ce5243233fabd0b55b2f07496ce332d0 FOREIGN KEY (FirstLevel) REFERENCES FirstLevel; +CREATE INDEX Index2c1bef67ce5243233fabd0b55b2f07496ce332d0 on TestAssociation (FirstLevel); + + ALTER TABLE AgregatorSameMD ADD CONSTRAINT FK790f076d73d9fd4c1a92fb530d886739a4852131 FOREIGN KEY (Master) REFERENCES DetailAndMaster; +CREATE INDEX Index790f076d73d9fd4c1a92fb530d886739a4852131 on AgregatorSameMD (Master); + ALTER TABLE STORMWEBSEARCH ADD CONSTRAINT FKc4378e39870eb056aec84088683297a01d2a6200 FOREIGN KEY (FilterSetting_m0) REFERENCES STORMFILTERSETTING; ALTER TABLE STORMFILTERDETAIL ADD CONSTRAINT FK921d16269835017e2a0d0e29ad6fb175454a70d0 FOREIGN KEY (FilterSetting_m0) REFERENCES STORMFILTERSETTING; diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Startups/UpdateViewsTestStartup.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Startups/UpdateViewsTestStartup.cs new file mode 100644 index 00000000..3ec2f447 --- /dev/null +++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/Startups/UpdateViewsTestStartup.cs @@ -0,0 +1,92 @@ +#if NETCOREAPP +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using System; + using System.Collections.Generic; + using ICSSoft.Services; + using ICSSoft.STORMNET; + using IIS.Caseberry.Logging.Objects; + using Microsoft.AspNetCore.Builder; + using Microsoft.AspNetCore.Hosting; + using Microsoft.AspNetCore.Routing; + using Microsoft.Extensions.Configuration; + using NewPlatform.Flexberry.ORM.ODataService; + using NewPlatform.Flexberry.ORM.ODataService.Extensions; + using NewPlatform.Flexberry.ORM.ODataService.Model; + using NewPlatform.Flexberry.ORM.ODataService.WebApi.Extensions; + using NewPlatform.Flexberry.Services; + using ODataServiceSample.AspNetCore; + using Unity; + + /// + /// Startup for testing UpdateView configuration - a view that is used instead of a default view during data object updates. + /// Differs from TestStartup that it sets UpdateView for and data objects. + /// + public class UpdateViewsTestStartup : Startup + { + /// + /// After the start of the OData app, the container in the OData app is its own. + /// Therefore, a static field is defined here, so that later this container can be pulled back. + /// + /// + public static IUnityContainer _unityContainer; + + /// + /// Initialize new instance of TestStartup. + /// + /// Configuration for new instance. + public UpdateViewsTestStartup(IConfiguration configuration) + : base(configuration) + { + } + + /// + /// Method for Unity container configuring. + /// + /// Unity container. + public override void ConfigureContainer(IUnityContainer unityContainer) + { + _unityContainer = unityContainer; + base.ConfigureContainer(unityContainer); + } + + /// + public override void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + IServiceProvider serviceProvider = app.ApplicationServices; + _unityContainer.RegisterInstance(env); + + app.UseMiddleware(); + + app.UseMvc(builder => + { + builder.MapRoute("Lock", "api/lock/{action}/{dataObjectId}", new { controller = "Lock" }); + builder.MapFileRoute(); + }); + + app.UseODataService(builder => + { + var assemblies = new[] + { + typeof(Медведь).Assembly, + typeof(ApplicationLog).Assembly, + typeof(UserSetting).Assembly, + typeof(Lock).Assembly, + }; + + PseudoDetailDefinitions pseudoDetailDefinitions = (PseudoDetailDefinitions)serviceProvider.GetService(typeof(PseudoDetailDefinitions)); + var updateViews = new Dictionary() // setting updateViews for testing + { + { typeof(Медведь), Медведь.Views.МедведьUpdateView }, + { typeof(Берлога), Берлога.Views.БерлогаUpdateView }, + }; + var modelBuilder = new DefaultDataObjectEdmModelBuilder(assemblies, serviceProvider, false, pseudoDetailDefinitions, updateViews: updateViews); + + var token = builder.MapDataObjectRoute(modelBuilder); + + _unityContainer.RegisterInstance(typeof(ManagementToken), token); + }); + } + } +} +#endif diff --git a/Tests/Objects/AgrClass1.cs b/Tests/Objects/AgrClass1.cs index 1b121c34..8283b880 100644 --- a/Tests/Objects/AgrClass1.cs +++ b/Tests/Objects/AgrClass1.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,16 +27,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class AgrClass1 : ICSSoft.STORMNET.DataObject { - + private string fAgrCl1Name; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailsClass1 fDetailsClass1; - + // *** Start programmer edit section *** (AgrClass1 CustomMembers) // *** End programmer edit section *** (AgrClass1 CustomMembers) - + /// /// AgrCl1Name. /// @@ -71,7 +68,7 @@ public virtual string AgrCl1Name // *** End programmer edit section *** (AgrClass1.AgrCl1Name Set end) } } - + /// /// AgrClass1. /// @@ -108,3 +105,4 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetails } } } + diff --git a/Tests/Objects/AgrClass2.cs b/Tests/Objects/AgrClass2.cs index b633bab8..65005990 100644 --- a/Tests/Objects/AgrClass2.cs +++ b/Tests/Objects/AgrClass2.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,16 +27,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class AgrClass2 : ICSSoft.STORMNET.DataObject { - + private string fAgrCl2Name; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailsClass2 fDetailsClass2; - + // *** Start programmer edit section *** (AgrClass2 CustomMembers) // *** End programmer edit section *** (AgrClass2 CustomMembers) - + /// /// AgrCl2Name. /// @@ -71,7 +68,7 @@ public virtual string AgrCl2Name // *** End programmer edit section *** (AgrClass2.AgrCl2Name Set end) } } - + /// /// AgrClass2. /// @@ -108,3 +105,4 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetails } } } + diff --git a/Tests/Objects/AgregatorSameMD.cs b/Tests/Objects/AgregatorSameMD.cs new file mode 100644 index 00000000..c1173b52 --- /dev/null +++ b/Tests/Objects/AgregatorSameMD.cs @@ -0,0 +1,143 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// AgregatorSameMD. + /// + // *** Start programmer edit section *** (AgregatorSameMD CustomAttributes) + + // *** End programmer edit section *** (AgregatorSameMD CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class AgregatorSameMD : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailAndMaster fMaster; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailAndMaster fDetails; + + // *** Start programmer edit section *** (AgregatorSameMD CustomMembers) + + // *** End programmer edit section *** (AgregatorSameMD CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (AgregatorSameMD.Name CustomAttributes) + + // *** End programmer edit section *** (AgregatorSameMD.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (AgregatorSameMD.Name Get start) + + // *** End programmer edit section *** (AgregatorSameMD.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (AgregatorSameMD.Name Get end) + + // *** End programmer edit section *** (AgregatorSameMD.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (AgregatorSameMD.Name Set start) + + // *** End programmer edit section *** (AgregatorSameMD.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (AgregatorSameMD.Name Set end) + + // *** End programmer edit section *** (AgregatorSameMD.Name Set end) + } + } + + /// + /// AgregatorSameMD. + /// + // *** Start programmer edit section *** (AgregatorSameMD.Master CustomAttributes) + + // *** End programmer edit section *** (AgregatorSameMD.Master CustomAttributes) + [PropertyStorage(new string[] { + "Master"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailAndMaster Master + { + get + { + // *** Start programmer edit section *** (AgregatorSameMD.Master Get start) + + // *** End programmer edit section *** (AgregatorSameMD.Master Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailAndMaster result = this.fMaster; + // *** Start programmer edit section *** (AgregatorSameMD.Master Get end) + + // *** End programmer edit section *** (AgregatorSameMD.Master Get end) + return result; + } + set + { + // *** Start programmer edit section *** (AgregatorSameMD.Master Set start) + + // *** End programmer edit section *** (AgregatorSameMD.Master Set start) + this.fMaster = value; + // *** Start programmer edit section *** (AgregatorSameMD.Master Set end) + + // *** End programmer edit section *** (AgregatorSameMD.Master Set end) + } + } + + /// + /// AgregatorSameMD. + /// + // *** Start programmer edit section *** (AgregatorSameMD.Details CustomAttributes) + + // *** End programmer edit section *** (AgregatorSameMD.Details CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailAndMaster Details + { + get + { + // *** Start programmer edit section *** (AgregatorSameMD.Details Get start) + + // *** End programmer edit section *** (AgregatorSameMD.Details Get start) + if ((this.fDetails == null)) + { + this.fDetails = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailAndMaster(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailAndMaster result = this.fDetails; + // *** Start programmer edit section *** (AgregatorSameMD.Details Get end) + + // *** End programmer edit section *** (AgregatorSameMD.Details Get end) + return result; + } + set + { + // *** Start programmer edit section *** (AgregatorSameMD.Details Set start) + + // *** End programmer edit section *** (AgregatorSameMD.Details Set start) + this.fDetails = value; + // *** Start programmer edit section *** (AgregatorSameMD.Details Set end) + + // *** End programmer edit section *** (AgregatorSameMD.Details Set end) + } + } + } +} + diff --git a/Tests/Objects/BaseLegoBlock.cs b/Tests/Objects/BaseLegoBlock.cs index c3c45511..bfb95dfb 100644 --- a/Tests/Objects/BaseLegoBlock.cs +++ b/Tests/Objects/BaseLegoBlock.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,17 +28,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class BaseLegoBlock : ICSSoft.STORMNET.DataObject { - - private string fName; - + private int fBlockId; - + + private string fName; + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockColor fColor; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoPatent fPatents; // *** Start programmer edit section *** (BaseLegoBlock CustomMembers) - [NotStored] public virtual string AssocType { @@ -54,68 +50,68 @@ public virtual string AssocType /// - /// Name. + /// BlockId. /// - // *** Start programmer edit section *** (BaseLegoBlock.Name CustomAttributes) + // *** Start programmer edit section *** (BaseLegoBlock.BlockId CustomAttributes) - // *** End programmer edit section *** (BaseLegoBlock.Name CustomAttributes) - [StrLen(255)] - public virtual string Name + // *** End programmer edit section *** (BaseLegoBlock.BlockId CustomAttributes) + public virtual int BlockId { get { - // *** Start programmer edit section *** (BaseLegoBlock.Name Get start) + // *** Start programmer edit section *** (BaseLegoBlock.BlockId Get start) - // *** End programmer edit section *** (BaseLegoBlock.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (BaseLegoBlock.Name Get end) + // *** End programmer edit section *** (BaseLegoBlock.BlockId Get start) + int result = this.fBlockId; + // *** Start programmer edit section *** (BaseLegoBlock.BlockId Get end) - // *** End programmer edit section *** (BaseLegoBlock.Name Get end) + // *** End programmer edit section *** (BaseLegoBlock.BlockId Get end) return result; } set { - // *** Start programmer edit section *** (BaseLegoBlock.Name Set start) + // *** Start programmer edit section *** (BaseLegoBlock.BlockId Set start) - // *** End programmer edit section *** (BaseLegoBlock.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (BaseLegoBlock.Name Set end) + // *** End programmer edit section *** (BaseLegoBlock.BlockId Set start) + this.fBlockId = value; + // *** Start programmer edit section *** (BaseLegoBlock.BlockId Set end) - // *** End programmer edit section *** (BaseLegoBlock.Name Set end) + // *** End programmer edit section *** (BaseLegoBlock.BlockId Set end) } } - + /// - /// BlockId. + /// Name. /// - // *** Start programmer edit section *** (BaseLegoBlock.BlockId CustomAttributes) + // *** Start programmer edit section *** (BaseLegoBlock.Name CustomAttributes) - // *** End programmer edit section *** (BaseLegoBlock.BlockId CustomAttributes) - public virtual int BlockId + // *** End programmer edit section *** (BaseLegoBlock.Name CustomAttributes) + [StrLen(255)] + public virtual string Name { get { - // *** Start programmer edit section *** (BaseLegoBlock.BlockId Get start) + // *** Start programmer edit section *** (BaseLegoBlock.Name Get start) - // *** End programmer edit section *** (BaseLegoBlock.BlockId Get start) - int result = this.fBlockId; - // *** Start programmer edit section *** (BaseLegoBlock.BlockId Get end) + // *** End programmer edit section *** (BaseLegoBlock.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (BaseLegoBlock.Name Get end) - // *** End programmer edit section *** (BaseLegoBlock.BlockId Get end) + // *** End programmer edit section *** (BaseLegoBlock.Name Get end) return result; } set { - // *** Start programmer edit section *** (BaseLegoBlock.BlockId Set start) + // *** Start programmer edit section *** (BaseLegoBlock.Name Set start) - // *** End programmer edit section *** (BaseLegoBlock.BlockId Set start) - this.fBlockId = value; - // *** Start programmer edit section *** (BaseLegoBlock.BlockId Set end) + // *** End programmer edit section *** (BaseLegoBlock.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (BaseLegoBlock.Name Set end) - // *** End programmer edit section *** (BaseLegoBlock.BlockId Set end) + // *** End programmer edit section *** (BaseLegoBlock.Name Set end) } } - + /// /// BaseLegoBlock. /// @@ -148,7 +144,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockColor Color // *** End programmer edit section *** (BaseLegoBlock.Color Set end) } } - + /// /// BaseLegoBlock. /// @@ -185,3 +181,4 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoPat } } } + diff --git a/Tests/Objects/Car.cs b/Tests/Objects/Car.cs index 8c8c4bd0..53a59afa 100644 --- a/Tests/Objects/Car.cs +++ b/Tests/Objects/Car.cs @@ -1,21 +1,18 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET.Business; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -37,84 +34,84 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "TipCar as \'TipCar\'"})] public class Car : ICSSoft.STORMNET.DataObject { - - private string fNumber; - + private string fModel; - + + private string fNumber; + private NewPlatform.Flexberry.ORM.ODataService.Tests.tTip fTipCar; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Driver fDriver; - + // *** Start programmer edit section *** (Car CustomMembers) // *** End programmer edit section *** (Car CustomMembers) - + /// - /// Number. + /// Model. /// - // *** Start programmer edit section *** (Car.Number CustomAttributes) + // *** Start programmer edit section *** (Car.Model CustomAttributes) - // *** End programmer edit section *** (Car.Number CustomAttributes) + // *** End programmer edit section *** (Car.Model CustomAttributes) [StrLen(255)] - public virtual string Number + public virtual string Model { get { - // *** Start programmer edit section *** (Car.Number Get start) + // *** Start programmer edit section *** (Car.Model Get start) - // *** End programmer edit section *** (Car.Number Get start) - string result = this.fNumber; - // *** Start programmer edit section *** (Car.Number Get end) + // *** End programmer edit section *** (Car.Model Get start) + string result = this.fModel; + // *** Start programmer edit section *** (Car.Model Get end) - // *** End programmer edit section *** (Car.Number Get end) + // *** End programmer edit section *** (Car.Model Get end) return result; } set { - // *** Start programmer edit section *** (Car.Number Set start) + // *** Start programmer edit section *** (Car.Model Set start) - // *** End programmer edit section *** (Car.Number Set start) - this.fNumber = value; - // *** Start programmer edit section *** (Car.Number Set end) + // *** End programmer edit section *** (Car.Model Set start) + this.fModel = value; + // *** Start programmer edit section *** (Car.Model Set end) - // *** End programmer edit section *** (Car.Number Set end) + // *** End programmer edit section *** (Car.Model Set end) } } - + /// - /// Model. + /// Number. /// - // *** Start programmer edit section *** (Car.Model CustomAttributes) + // *** Start programmer edit section *** (Car.Number CustomAttributes) - // *** End programmer edit section *** (Car.Model CustomAttributes) + // *** End programmer edit section *** (Car.Number CustomAttributes) [StrLen(255)] - public virtual string Model + public virtual string Number { get { - // *** Start programmer edit section *** (Car.Model Get start) + // *** Start programmer edit section *** (Car.Number Get start) - // *** End programmer edit section *** (Car.Model Get start) - string result = this.fModel; - // *** Start programmer edit section *** (Car.Model Get end) + // *** End programmer edit section *** (Car.Number Get start) + string result = this.fNumber; + // *** Start programmer edit section *** (Car.Number Get end) - // *** End programmer edit section *** (Car.Model Get end) + // *** End programmer edit section *** (Car.Number Get end) return result; } set { - // *** Start programmer edit section *** (Car.Model Set start) + // *** Start programmer edit section *** (Car.Number Set start) - // *** End programmer edit section *** (Car.Model Set start) - this.fModel = value; - // *** Start programmer edit section *** (Car.Model Set end) + // *** End programmer edit section *** (Car.Number Set start) + this.fNumber = value; + // *** Start programmer edit section *** (Car.Number Set end) - // *** End programmer edit section *** (Car.Model Set end) + // *** End programmer edit section *** (Car.Number Set end) } } - + /// /// TipCar. /// @@ -145,7 +142,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.tTip TipCar // *** End programmer edit section *** (Car.TipCar Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Driver. /// @@ -180,13 +177,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Driver Driver // *** End programmer edit section *** (Car.Driver Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "AllData" view. /// @@ -199,7 +196,7 @@ public static ICSSoft.STORMNET.View AllData } } } - + /// /// Detail array of Car. /// @@ -208,12 +205,12 @@ public static ICSSoft.STORMNET.View AllData // *** End programmer edit section *** (DetailArrayDetailArrayOfCar CustomAttributes) public class DetailArrayOfCar : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfCar members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfCar members) - + /// /// Construct detail array. /// @@ -227,7 +224,7 @@ public DetailArrayOfCar(NewPlatform.Flexberry.ORM.ODataService.Tests.Driver fDri base(typeof(Car), ((ICSSoft.STORMNET.DataObject)(fDriver))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.Car this[int index] { get @@ -235,10 +232,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.Car this[int index] return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Car)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Car dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/Child.cs b/Tests/Objects/Child.cs index ee45e7f5..844df756 100644 --- a/Tests/Objects/Child.cs +++ b/Tests/Objects/Child.cs @@ -1,154 +1,152 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Child. - /// - // *** Start programmer edit section *** (Child CustomAttributes) - - // *** End programmer edit section *** (Child CustomAttributes) - [PublishName("Child")] - [AutoAltered()] - [ICSSoft.STORMNET.NotStored()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class Child : ICSSoft.STORMNET.DataObject - { - - private string fName; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Person fParent; - - // *** Start programmer edit section *** (Child CustomMembers) - - // *** End programmer edit section *** (Child CustomMembers) - - - /// - /// Name. - /// - // *** Start programmer edit section *** (Child.Name CustomAttributes) - - // *** End programmer edit section *** (Child.Name CustomAttributes) - [StrLen(255)] - public virtual string Name - { - get - { - // *** Start programmer edit section *** (Child.Name Get start) - - // *** End programmer edit section *** (Child.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (Child.Name Get end) - - // *** End programmer edit section *** (Child.Name Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Child.Name Set start) - - // *** End programmer edit section *** (Child.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (Child.Name Set end) - - // *** End programmer edit section *** (Child.Name Set end) - } - } - - /// - /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Person. - /// - // *** Start programmer edit section *** (Child.Parent CustomAttributes) - - // *** End programmer edit section *** (Child.Parent CustomAttributes) - [Agregator()] - [NotNull()] - [PropertyStorage(new string[] { - "Parent"})] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Person Parent - { - get - { - // *** Start programmer edit section *** (Child.Parent Get start) - - // *** End programmer edit section *** (Child.Parent Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Person result = this.fParent; - // *** Start programmer edit section *** (Child.Parent Get end) - - // *** End programmer edit section *** (Child.Parent Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Child.Parent Set start) - - // *** End programmer edit section *** (Child.Parent Set start) - this.fParent = value; - // *** Start programmer edit section *** (Child.Parent Set end) - - // *** End programmer edit section *** (Child.Parent Set end) - } - } - } - - /// - /// Detail array of Child. - /// - // *** Start programmer edit section *** (DetailArrayDetailArrayOfChild CustomAttributes) - - // *** End programmer edit section *** (DetailArrayDetailArrayOfChild CustomAttributes) - public class DetailArrayOfChild : ICSSoft.STORMNET.DetailArray - { - - // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild members) - - // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild members) - - - /// - /// Construct detail array. - /// - /// - /// Returns object with type Child by index. - /// - /// - /// Adds object with type Child. - /// - public DetailArrayOfChild(NewPlatform.Flexberry.ORM.ODataService.Tests.Person fPerson) : - base(typeof(Child), ((ICSSoft.STORMNET.DataObject)(fPerson))) - { - } - - public NewPlatform.Flexberry.ORM.ODataService.Tests.Child this[int index] - { - get - { - return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Child)(this.ItemByIndex(index))); - } - } - - public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Child dataobject) - { - this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Child. + /// + // *** Start programmer edit section *** (Child CustomAttributes) + + // *** End programmer edit section *** (Child CustomAttributes) + [PublishName("Child")] + [AutoAltered()] + [ICSSoft.STORMNET.NotStored()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class Child : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Person fParent; + + // *** Start programmer edit section *** (Child CustomMembers) + + // *** End programmer edit section *** (Child CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (Child.Name CustomAttributes) + + // *** End programmer edit section *** (Child.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (Child.Name Get start) + + // *** End programmer edit section *** (Child.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (Child.Name Get end) + + // *** End programmer edit section *** (Child.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Child.Name Set start) + + // *** End programmer edit section *** (Child.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (Child.Name Set end) + + // *** End programmer edit section *** (Child.Name Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Person. + /// + // *** Start programmer edit section *** (Child.Parent CustomAttributes) + + // *** End programmer edit section *** (Child.Parent CustomAttributes) + [Agregator()] + [NotNull()] + [PropertyStorage(new string[] { + "Parent"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Person Parent + { + get + { + // *** Start programmer edit section *** (Child.Parent Get start) + + // *** End programmer edit section *** (Child.Parent Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Person result = this.fParent; + // *** Start programmer edit section *** (Child.Parent Get end) + + // *** End programmer edit section *** (Child.Parent Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Child.Parent Set start) + + // *** End programmer edit section *** (Child.Parent Set start) + this.fParent = value; + // *** Start programmer edit section *** (Child.Parent Set end) + + // *** End programmer edit section *** (Child.Parent Set end) + } + } + } + + /// + /// Detail array of Child. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfChild CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfChild CustomAttributes) + public class DetailArrayOfChild : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type Child by index. + /// + /// + /// Adds object with type Child. + /// + public DetailArrayOfChild(NewPlatform.Flexberry.ORM.ODataService.Tests.Person fPerson) : + base(typeof(Child), ((ICSSoft.STORMNET.DataObject)(fPerson))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.Child this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Child)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Child dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git a/Tests/Objects/Daughter.cs b/Tests/Objects/Daughter.cs index 3af39df9..dc1ba19b 100644 --- a/Tests/Objects/Daughter.cs +++ b/Tests/Objects/Daughter.cs @@ -1,75 +1,73 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Daughter. - /// - // *** Start programmer edit section *** (Daughter CustomAttributes) - - // *** End programmer edit section *** (Daughter CustomAttributes) - [PublishName("Daughter")] - [AutoAltered()] - [ICSSoft.STORMNET.NotStored(false)] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class Daughter : NewPlatform.Flexberry.ORM.ODataService.Tests.Child - { - - private string fDressColor; - - // *** Start programmer edit section *** (Daughter CustomMembers) - - // *** End programmer edit section *** (Daughter CustomMembers) - - - /// - /// DressColor. - /// - // *** Start programmer edit section *** (Daughter.DressColor CustomAttributes) - - // *** End programmer edit section *** (Daughter.DressColor CustomAttributes) - [StrLen(255)] - public virtual string DressColor - { - get - { - // *** Start programmer edit section *** (Daughter.DressColor Get start) - - // *** End programmer edit section *** (Daughter.DressColor Get start) - string result = this.fDressColor; - // *** Start programmer edit section *** (Daughter.DressColor Get end) - - // *** End programmer edit section *** (Daughter.DressColor Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Daughter.DressColor Set start) - - // *** End programmer edit section *** (Daughter.DressColor Set start) - this.fDressColor = value; - // *** Start programmer edit section *** (Daughter.DressColor Set end) - - // *** End programmer edit section *** (Daughter.DressColor Set end) - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Daughter. + /// + // *** Start programmer edit section *** (Daughter CustomAttributes) + + // *** End programmer edit section *** (Daughter CustomAttributes) + [PublishName("Daughter")] + [AutoAltered()] + [ICSSoft.STORMNET.NotStored(false)] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class Daughter : NewPlatform.Flexberry.ORM.ODataService.Tests.Child + { + + private string fDressColor; + + // *** Start programmer edit section *** (Daughter CustomMembers) + + // *** End programmer edit section *** (Daughter CustomMembers) + + + /// + /// DressColor. + /// + // *** Start programmer edit section *** (Daughter.DressColor CustomAttributes) + + // *** End programmer edit section *** (Daughter.DressColor CustomAttributes) + [StrLen(255)] + public virtual string DressColor + { + get + { + // *** Start programmer edit section *** (Daughter.DressColor Get start) + + // *** End programmer edit section *** (Daughter.DressColor Get start) + string result = this.fDressColor; + // *** Start programmer edit section *** (Daughter.DressColor Get end) + + // *** End programmer edit section *** (Daughter.DressColor Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Daughter.DressColor Set start) + + // *** End programmer edit section *** (Daughter.DressColor Set start) + this.fDressColor = value; + // *** Start programmer edit section *** (Daughter.DressColor Set end) + + // *** End programmer edit section *** (Daughter.DressColor Set end) + } + } + } +} + diff --git a/Tests/Objects/DetailAndMaster.cs b/Tests/Objects/DetailAndMaster.cs new file mode 100644 index 00000000..1cf7cbb2 --- /dev/null +++ b/Tests/Objects/DetailAndMaster.cs @@ -0,0 +1,150 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// DetailAndMaster. + /// + // *** Start programmer edit section *** (DetailAndMaster CustomAttributes) + + // *** End programmer edit section *** (DetailAndMaster CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class DetailAndMaster : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.AgregatorSameMD fAgregator; + + // *** Start programmer edit section *** (DetailAndMaster CustomMembers) + + // *** End programmer edit section *** (DetailAndMaster CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (DetailAndMaster.Name CustomAttributes) + + // *** End programmer edit section *** (DetailAndMaster.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (DetailAndMaster.Name Get start) + + // *** End programmer edit section *** (DetailAndMaster.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (DetailAndMaster.Name Get end) + + // *** End programmer edit section *** (DetailAndMaster.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (DetailAndMaster.Name Set start) + + // *** End programmer edit section *** (DetailAndMaster.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (DetailAndMaster.Name Set end) + + // *** End programmer edit section *** (DetailAndMaster.Name Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.AgregatorSameMD. + /// + // *** Start programmer edit section *** (DetailAndMaster.Agregator CustomAttributes) + + // *** End programmer edit section *** (DetailAndMaster.Agregator CustomAttributes) + [Agregator()] + [NotNull()] + [PropertyStorage(new string[] { + "Agregator"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.AgregatorSameMD Agregator + { + get + { + // *** Start programmer edit section *** (DetailAndMaster.Agregator Get start) + + // *** End programmer edit section *** (DetailAndMaster.Agregator Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.AgregatorSameMD result = this.fAgregator; + // *** Start programmer edit section *** (DetailAndMaster.Agregator Get end) + + // *** End programmer edit section *** (DetailAndMaster.Agregator Get end) + return result; + } + set + { + // *** Start programmer edit section *** (DetailAndMaster.Agregator Set start) + + // *** End programmer edit section *** (DetailAndMaster.Agregator Set start) + this.fAgregator = value; + // *** Start programmer edit section *** (DetailAndMaster.Agregator Set end) + + // *** End programmer edit section *** (DetailAndMaster.Agregator Set end) + } + } + } + + /// + /// Detail array of DetailAndMaster. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfDetailAndMaster CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfDetailAndMaster CustomAttributes) + public class DetailArrayOfDetailAndMaster : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailAndMaster members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailAndMaster members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type DetailAndMaster by index. + /// + /// + /// Adds object with type DetailAndMaster. + /// + public DetailArrayOfDetailAndMaster(NewPlatform.Flexberry.ORM.ODataService.Tests.AgregatorSameMD fAgregatorSameMD) : + base(typeof(DetailAndMaster), ((ICSSoft.STORMNET.DataObject)(fAgregatorSameMD))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.DetailAndMaster this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.DetailAndMaster)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.DetailAndMaster dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git a/Tests/Objects/DetailsClass1.cs b/Tests/Objects/DetailsClass1.cs index 6b86e84d..08541f90 100644 --- a/Tests/Objects/DetailsClass1.cs +++ b/Tests/Objects/DetailsClass1.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,18 +27,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class DetailsClass1 : ICSSoft.STORMNET.DataObject { - + private string fDetailCl1Name; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass2 fDetailsClass2; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass1 fAgrClass1; - + // *** Start programmer edit section *** (DetailsClass1 CustomMembers) // *** End programmer edit section *** (DetailsClass1 CustomMembers) - + /// /// DetailCl1Name. /// @@ -73,7 +70,7 @@ public virtual string DetailCl1Name // *** End programmer edit section *** (DetailsClass1.DetailCl1Name Set end) } } - + /// /// DetailsClass1. /// @@ -107,7 +104,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass2 Detail // *** End programmer edit section *** (DetailsClass1.DetailsClass2 Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass1. /// @@ -143,7 +140,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass1 AgrClass1 } } } - + /// /// Detail array of DetailsClass1. /// @@ -152,12 +149,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass1 AgrClass1 // *** End programmer edit section *** (DetailArrayDetailArrayOfDetailsClass1 CustomAttributes) public class DetailArrayOfDetailsClass1 : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailsClass1 members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailsClass1 members) - + /// /// Construct detail array. /// @@ -171,7 +168,7 @@ public DetailArrayOfDetailsClass1(NewPlatform.Flexberry.ORM.ODataService.Tests.A base(typeof(DetailsClass1), ((ICSSoft.STORMNET.DataObject)(fAgrClass1))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass1 this[int index] { get @@ -179,10 +176,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass1 this[int index return ((NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass1)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass1 dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/DetailsClass2.cs b/Tests/Objects/DetailsClass2.cs index 5dbbbc64..18440853 100644 --- a/Tests/Objects/DetailsClass2.cs +++ b/Tests/Objects/DetailsClass2.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,16 +27,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class DetailsClass2 : ICSSoft.STORMNET.DataObject { - + private string fDetailCl2Name; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass2 fAgrClass2; - + // *** Start programmer edit section *** (DetailsClass2 CustomMembers) // *** End programmer edit section *** (DetailsClass2 CustomMembers) - + /// /// DetailCl2Name. /// @@ -71,7 +68,7 @@ public virtual string DetailCl2Name // *** End programmer edit section *** (DetailsClass2.DetailCl2Name Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass2. /// @@ -107,7 +104,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass2 AgrClass2 } } } - + /// /// Detail array of DetailsClass2. /// @@ -116,12 +113,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass2 AgrClass2 // *** End programmer edit section *** (DetailArrayDetailArrayOfDetailsClass2 CustomAttributes) public class DetailArrayOfDetailsClass2 : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailsClass2 members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfDetailsClass2 members) - + /// /// Construct detail array. /// @@ -135,7 +132,7 @@ public DetailArrayOfDetailsClass2(NewPlatform.Flexberry.ORM.ODataService.Tests.A base(typeof(DetailsClass2), ((ICSSoft.STORMNET.DataObject)(fAgrClass2))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass2 this[int index] { get @@ -143,10 +140,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass2 this[int index return ((NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass2)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.DetailsClass2 dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/Driver.cs b/Tests/Objects/Driver.cs index f6718dd8..4d556960 100644 --- a/Tests/Objects/Driver.cs +++ b/Tests/Objects/Driver.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -34,52 +31,20 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Documents as \'Documents\'"})] public class Driver : ICSSoft.STORMNET.DataObject { - - private string fName; - + private int fCarCount; - - private bool fDocuments; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfCar fCar; - - // *** Start programmer edit section *** (Driver CustomMembers) - // *** End programmer edit section *** (Driver CustomMembers) + private bool fDocuments; - - /// - /// Name. - /// - // *** Start programmer edit section *** (Driver.Name CustomAttributes) + private string fName; - // *** End programmer edit section *** (Driver.Name CustomAttributes) - [StrLen(255)] - public virtual string Name - { - get - { - // *** Start programmer edit section *** (Driver.Name Get start) + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfCar fCar; - // *** End programmer edit section *** (Driver.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (Driver.Name Get end) + // *** Start programmer edit section *** (Driver CustomMembers) - // *** End programmer edit section *** (Driver.Name Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Driver.Name Set start) + // *** End programmer edit section *** (Driver CustomMembers) - // *** End programmer edit section *** (Driver.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (Driver.Name Set end) - // *** End programmer edit section *** (Driver.Name Set end) - } - } - /// /// CarCount. /// @@ -110,7 +75,7 @@ public virtual int CarCount // *** End programmer edit section *** (Driver.CarCount Set end) } } - + /// /// Documents. /// @@ -141,7 +106,39 @@ public virtual bool Documents // *** End programmer edit section *** (Driver.Documents Set end) } } - + + /// + /// Name. + /// + // *** Start programmer edit section *** (Driver.Name CustomAttributes) + + // *** End programmer edit section *** (Driver.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (Driver.Name Get start) + + // *** End programmer edit section *** (Driver.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (Driver.Name Get end) + + // *** End programmer edit section *** (Driver.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Driver.Name Set start) + + // *** End programmer edit section *** (Driver.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (Driver.Name Set end) + + // *** End programmer edit section *** (Driver.Name Set end) + } + } + /// /// Driver. /// @@ -176,13 +173,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfCar Car // *** End programmer edit section *** (Driver.Car Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "AllData" view. /// @@ -196,3 +193,4 @@ public static ICSSoft.STORMNET.View AllData } } } + diff --git a/Tests/Objects/FirstLevel.cs b/Tests/Objects/FirstLevel.cs new file mode 100644 index 00000000..3d82efd9 --- /dev/null +++ b/Tests/Objects/FirstLevel.cs @@ -0,0 +1,230 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// FirstLevel. + /// + // *** Start programmer edit section *** (FirstLevel CustomAttributes) + + // *** End programmer edit section *** (FirstLevel CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class FirstLevel : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel1 fSecondLevel1; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel2 fSecondLevel2; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.TestConfiguration fTestConfiguration; + + // *** Start programmer edit section *** (FirstLevel CustomMembers) + + // *** End programmer edit section *** (FirstLevel CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (FirstLevel.Name CustomAttributes) + + // *** End programmer edit section *** (FirstLevel.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (FirstLevel.Name Get start) + + // *** End programmer edit section *** (FirstLevel.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (FirstLevel.Name Get end) + + // *** End programmer edit section *** (FirstLevel.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (FirstLevel.Name Set start) + + // *** End programmer edit section *** (FirstLevel.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (FirstLevel.Name Set end) + + // *** End programmer edit section *** (FirstLevel.Name Set end) + } + } + + /// + /// FirstLevel. + /// + // *** Start programmer edit section *** (FirstLevel.SecondLevel1 CustomAttributes) + + // *** End programmer edit section *** (FirstLevel.SecondLevel1 CustomAttributes) + [TypeUsage(new System.Type[] { + typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1), + typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass)})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel1 SecondLevel1 + { + get + { + // *** Start programmer edit section *** (FirstLevel.SecondLevel1 Get start) + + // *** End programmer edit section *** (FirstLevel.SecondLevel1 Get start) + if ((this.fSecondLevel1 == null)) + { + this.fSecondLevel1 = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel1(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel1 result = this.fSecondLevel1; + // *** Start programmer edit section *** (FirstLevel.SecondLevel1 Get end) + + // *** End programmer edit section *** (FirstLevel.SecondLevel1 Get end) + return result; + } + set + { + // *** Start programmer edit section *** (FirstLevel.SecondLevel1 Set start) + + // *** End programmer edit section *** (FirstLevel.SecondLevel1 Set start) + this.fSecondLevel1 = value; + // *** Start programmer edit section *** (FirstLevel.SecondLevel1 Set end) + + // *** End programmer edit section *** (FirstLevel.SecondLevel1 Set end) + } + } + + /// + /// FirstLevel. + /// + // *** Start programmer edit section *** (FirstLevel.SecondLevel2 CustomAttributes) + + // *** End programmer edit section *** (FirstLevel.SecondLevel2 CustomAttributes) + [TypeUsage(new System.Type[] { + typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel2), + typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.TestAssociation)})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel2 SecondLevel2 + { + get + { + // *** Start programmer edit section *** (FirstLevel.SecondLevel2 Get start) + + // *** End programmer edit section *** (FirstLevel.SecondLevel2 Get start) + if ((this.fSecondLevel2 == null)) + { + this.fSecondLevel2 = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel2(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel2 result = this.fSecondLevel2; + // *** Start programmer edit section *** (FirstLevel.SecondLevel2 Get end) + + // *** End programmer edit section *** (FirstLevel.SecondLevel2 Get end) + return result; + } + set + { + // *** Start programmer edit section *** (FirstLevel.SecondLevel2 Set start) + + // *** End programmer edit section *** (FirstLevel.SecondLevel2 Set start) + this.fSecondLevel2 = value; + // *** Start programmer edit section *** (FirstLevel.SecondLevel2 Set end) + + // *** End programmer edit section *** (FirstLevel.SecondLevel2 Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.TestConfiguration. + /// + // *** Start programmer edit section *** (FirstLevel.TestConfiguration CustomAttributes) + + // *** End programmer edit section *** (FirstLevel.TestConfiguration CustomAttributes) + [Agregator()] + [NotNull()] + [PropertyStorage(new string[] { + "TestConfiguration"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.TestConfiguration TestConfiguration + { + get + { + // *** Start programmer edit section *** (FirstLevel.TestConfiguration Get start) + + // *** End programmer edit section *** (FirstLevel.TestConfiguration Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.TestConfiguration result = this.fTestConfiguration; + // *** Start programmer edit section *** (FirstLevel.TestConfiguration Get end) + + // *** End programmer edit section *** (FirstLevel.TestConfiguration Get end) + return result; + } + set + { + // *** Start programmer edit section *** (FirstLevel.TestConfiguration Set start) + + // *** End programmer edit section *** (FirstLevel.TestConfiguration Set start) + this.fTestConfiguration = value; + // *** Start programmer edit section *** (FirstLevel.TestConfiguration Set end) + + // *** End programmer edit section *** (FirstLevel.TestConfiguration Set end) + } + } + } + + /// + /// Detail array of FirstLevel. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfFirstLevel CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfFirstLevel CustomAttributes) + public class DetailArrayOfFirstLevel : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfFirstLevel members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfFirstLevel members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type FirstLevel by index. + /// + /// + /// Adds object with type FirstLevel. + /// + public DetailArrayOfFirstLevel(NewPlatform.Flexberry.ORM.ODataService.Tests.TestConfiguration fTestConfiguration) : + base(typeof(FirstLevel), ((ICSSoft.STORMNET.DataObject)(fTestConfiguration))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git a/Tests/Objects/LegoBlock.cs b/Tests/Objects/LegoBlock.cs index 47d1db04..052297f4 100644 --- a/Tests/Objects/LegoBlock.cs +++ b/Tests/Objects/LegoBlock.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -32,25 +29,24 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoBlock : NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBlock { - - private int fWidth; - - private int fHeight; - - private int fDepth; - + private string fConfiguration; - + + private int fDepth; + + private int fHeight; + + private int fWidth; + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoMaterial fMaterial; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockBottomPanel fBottomPanels; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockCustomPanel fCustomPanels; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanel fTopPanels; // *** Start programmer edit section *** (LegoBlock CustomMembers) - [NotStored] [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.PostgresDataService), "'Association'")] public override string AssocType @@ -65,130 +61,130 @@ public override string AssocType /// - /// Width. + /// Configuration. /// - // *** Start programmer edit section *** (LegoBlock.Width CustomAttributes) + // *** Start programmer edit section *** (LegoBlock.Configuration CustomAttributes) - // *** End programmer edit section *** (LegoBlock.Width CustomAttributes) - public virtual int Width + // *** End programmer edit section *** (LegoBlock.Configuration CustomAttributes) + [StrLen(255)] + public virtual string Configuration { get { - // *** Start programmer edit section *** (LegoBlock.Width Get start) + // *** Start programmer edit section *** (LegoBlock.Configuration Get start) - // *** End programmer edit section *** (LegoBlock.Width Get start) - int result = this.fWidth; - // *** Start programmer edit section *** (LegoBlock.Width Get end) + // *** End programmer edit section *** (LegoBlock.Configuration Get start) + string result = this.fConfiguration; + // *** Start programmer edit section *** (LegoBlock.Configuration Get end) - // *** End programmer edit section *** (LegoBlock.Width Get end) + // *** End programmer edit section *** (LegoBlock.Configuration Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlock.Width Set start) + // *** Start programmer edit section *** (LegoBlock.Configuration Set start) - // *** End programmer edit section *** (LegoBlock.Width Set start) - this.fWidth = value; - // *** Start programmer edit section *** (LegoBlock.Width Set end) + // *** End programmer edit section *** (LegoBlock.Configuration Set start) + this.fConfiguration = value; + // *** Start programmer edit section *** (LegoBlock.Configuration Set end) - // *** End programmer edit section *** (LegoBlock.Width Set end) + // *** End programmer edit section *** (LegoBlock.Configuration Set end) } } - + /// - /// Height. + /// Depth. /// - // *** Start programmer edit section *** (LegoBlock.Height CustomAttributes) + // *** Start programmer edit section *** (LegoBlock.Depth CustomAttributes) - // *** End programmer edit section *** (LegoBlock.Height CustomAttributes) - public virtual int Height + // *** End programmer edit section *** (LegoBlock.Depth CustomAttributes) + public virtual int Depth { get { - // *** Start programmer edit section *** (LegoBlock.Height Get start) + // *** Start programmer edit section *** (LegoBlock.Depth Get start) - // *** End programmer edit section *** (LegoBlock.Height Get start) - int result = this.fHeight; - // *** Start programmer edit section *** (LegoBlock.Height Get end) + // *** End programmer edit section *** (LegoBlock.Depth Get start) + int result = this.fDepth; + // *** Start programmer edit section *** (LegoBlock.Depth Get end) - // *** End programmer edit section *** (LegoBlock.Height Get end) + // *** End programmer edit section *** (LegoBlock.Depth Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlock.Height Set start) + // *** Start programmer edit section *** (LegoBlock.Depth Set start) - // *** End programmer edit section *** (LegoBlock.Height Set start) - this.fHeight = value; - // *** Start programmer edit section *** (LegoBlock.Height Set end) + // *** End programmer edit section *** (LegoBlock.Depth Set start) + this.fDepth = value; + // *** Start programmer edit section *** (LegoBlock.Depth Set end) - // *** End programmer edit section *** (LegoBlock.Height Set end) + // *** End programmer edit section *** (LegoBlock.Depth Set end) } } - + /// - /// Depth. + /// Height. /// - // *** Start programmer edit section *** (LegoBlock.Depth CustomAttributes) + // *** Start programmer edit section *** (LegoBlock.Height CustomAttributes) - // *** End programmer edit section *** (LegoBlock.Depth CustomAttributes) - public virtual int Depth + // *** End programmer edit section *** (LegoBlock.Height CustomAttributes) + public virtual int Height { get { - // *** Start programmer edit section *** (LegoBlock.Depth Get start) + // *** Start programmer edit section *** (LegoBlock.Height Get start) - // *** End programmer edit section *** (LegoBlock.Depth Get start) - int result = this.fDepth; - // *** Start programmer edit section *** (LegoBlock.Depth Get end) + // *** End programmer edit section *** (LegoBlock.Height Get start) + int result = this.fHeight; + // *** Start programmer edit section *** (LegoBlock.Height Get end) - // *** End programmer edit section *** (LegoBlock.Depth Get end) + // *** End programmer edit section *** (LegoBlock.Height Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlock.Depth Set start) + // *** Start programmer edit section *** (LegoBlock.Height Set start) - // *** End programmer edit section *** (LegoBlock.Depth Set start) - this.fDepth = value; - // *** Start programmer edit section *** (LegoBlock.Depth Set end) + // *** End programmer edit section *** (LegoBlock.Height Set start) + this.fHeight = value; + // *** Start programmer edit section *** (LegoBlock.Height Set end) - // *** End programmer edit section *** (LegoBlock.Depth Set end) + // *** End programmer edit section *** (LegoBlock.Height Set end) } } - + /// - /// Configuration. + /// Width. /// - // *** Start programmer edit section *** (LegoBlock.Configuration CustomAttributes) + // *** Start programmer edit section *** (LegoBlock.Width CustomAttributes) - // *** End programmer edit section *** (LegoBlock.Configuration CustomAttributes) - [StrLen(255)] - public virtual string Configuration + // *** End programmer edit section *** (LegoBlock.Width CustomAttributes) + public virtual int Width { get { - // *** Start programmer edit section *** (LegoBlock.Configuration Get start) + // *** Start programmer edit section *** (LegoBlock.Width Get start) - // *** End programmer edit section *** (LegoBlock.Configuration Get start) - string result = this.fConfiguration; - // *** Start programmer edit section *** (LegoBlock.Configuration Get end) + // *** End programmer edit section *** (LegoBlock.Width Get start) + int result = this.fWidth; + // *** Start programmer edit section *** (LegoBlock.Width Get end) - // *** End programmer edit section *** (LegoBlock.Configuration Get end) + // *** End programmer edit section *** (LegoBlock.Width Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlock.Configuration Set start) + // *** Start programmer edit section *** (LegoBlock.Width Set start) - // *** End programmer edit section *** (LegoBlock.Configuration Set start) - this.fConfiguration = value; - // *** Start programmer edit section *** (LegoBlock.Configuration Set end) + // *** End programmer edit section *** (LegoBlock.Width Set start) + this.fWidth = value; + // *** Start programmer edit section *** (LegoBlock.Width Set end) - // *** End programmer edit section *** (LegoBlock.Configuration Set end) + // *** End programmer edit section *** (LegoBlock.Width Set end) } } - + /// /// LegoBlock. /// @@ -221,7 +217,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoMaterial Materia // *** End programmer edit section *** (LegoBlock.Material Set end) } } - + /// /// LegoBlock. /// @@ -256,7 +252,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlo // *** End programmer edit section *** (LegoBlock.BottomPanels Set end) } } - + /// /// LegoBlock. /// @@ -291,7 +287,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlo // *** End programmer edit section *** (LegoBlock.CustomPanels Set end) } } - + /// /// LegoBlock. /// @@ -328,3 +324,4 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlo } } } + diff --git a/Tests/Objects/LegoBlockBottomPanel.cs b/Tests/Objects/LegoBlockBottomPanel.cs index 613d6533..6db72e94 100644 --- a/Tests/Objects/LegoBlockBottomPanel.cs +++ b/Tests/Objects/LegoBlockBottomPanel.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,80 +28,80 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoBlockBottomPanel : ICSSoft.STORMNET.DataObject { - - private int fWidthCount; - + private int fHeightCount; - + + private int fWidthCount; + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock fBlock; - + // *** Start programmer edit section *** (LegoBlockBottomPanel CustomMembers) // *** End programmer edit section *** (LegoBlockBottomPanel CustomMembers) - + /// - /// WidthCount. + /// HeightCount. /// - // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount CustomAttributes) + // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount CustomAttributes) - // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount CustomAttributes) - public virtual int WidthCount + // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount CustomAttributes) + public virtual int HeightCount { get { - // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Get start) + // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Get start) - // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Get start) - int result = this.fWidthCount; - // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Get end) + // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Get start) + int result = this.fHeightCount; + // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Get end) - // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Get end) + // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Set start) + // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Set start) - // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Set start) - this.fWidthCount = value; - // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Set end) + // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Set start) + this.fHeightCount = value; + // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Set end) - // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Set end) + // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Set end) } } - + /// - /// HeightCount. + /// WidthCount. /// - // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount CustomAttributes) + // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount CustomAttributes) - // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount CustomAttributes) - public virtual int HeightCount + // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount CustomAttributes) + public virtual int WidthCount { get { - // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Get start) + // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Get start) - // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Get start) - int result = this.fHeightCount; - // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Get end) + // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Get start) + int result = this.fWidthCount; + // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Get end) - // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Get end) + // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Set start) + // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Set start) - // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Set start) - this.fHeightCount = value; - // *** Start programmer edit section *** (LegoBlockBottomPanel.HeightCount Set end) + // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Set start) + this.fWidthCount = value; + // *** Start programmer edit section *** (LegoBlockBottomPanel.WidthCount Set end) - // *** End programmer edit section *** (LegoBlockBottomPanel.HeightCount Set end) + // *** End programmer edit section *** (LegoBlockBottomPanel.WidthCount Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock. /// @@ -140,7 +137,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock Block } } } - + /// /// Detail array of LegoBlockBottomPanel. /// @@ -149,12 +146,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock Block // *** End programmer edit section *** (DetailArrayDetailArrayOfLegoBlockBottomPanel CustomAttributes) public class DetailArrayOfLegoBlockBottomPanel : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockBottomPanel members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockBottomPanel members) - + /// /// Construct detail array. /// @@ -168,7 +165,7 @@ public DetailArrayOfLegoBlockBottomPanel(NewPlatform.Flexberry.ORM.ODataService. base(typeof(LegoBlockBottomPanel), ((ICSSoft.STORMNET.DataObject)(fLegoBlock))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockBottomPanel this[int index] { get @@ -176,10 +173,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockBottomPanel this[in return ((NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockBottomPanel)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockBottomPanel dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/LegoBlockColor.cs b/Tests/Objects/LegoBlockColor.cs index f9ae4fd6..8d678fd2 100644 --- a/Tests/Objects/LegoBlockColor.cs +++ b/Tests/Objects/LegoBlockColor.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,77 +28,78 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoBlockColor : ICSSoft.STORMNET.DataObject { - - private string fName; - + private int fColorNumber; - + + private string fName; + // *** Start programmer edit section *** (LegoBlockColor CustomMembers) // *** End programmer edit section *** (LegoBlockColor CustomMembers) - + /// - /// Name. + /// ColorNumber. /// - // *** Start programmer edit section *** (LegoBlockColor.Name CustomAttributes) + // *** Start programmer edit section *** (LegoBlockColor.ColorNumber CustomAttributes) - // *** End programmer edit section *** (LegoBlockColor.Name CustomAttributes) - [StrLen(255)] - public virtual string Name + // *** End programmer edit section *** (LegoBlockColor.ColorNumber CustomAttributes) + public virtual int ColorNumber { get { - // *** Start programmer edit section *** (LegoBlockColor.Name Get start) + // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Get start) - // *** End programmer edit section *** (LegoBlockColor.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (LegoBlockColor.Name Get end) + // *** End programmer edit section *** (LegoBlockColor.ColorNumber Get start) + int result = this.fColorNumber; + // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Get end) - // *** End programmer edit section *** (LegoBlockColor.Name Get end) + // *** End programmer edit section *** (LegoBlockColor.ColorNumber Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlockColor.Name Set start) + // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Set start) - // *** End programmer edit section *** (LegoBlockColor.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (LegoBlockColor.Name Set end) + // *** End programmer edit section *** (LegoBlockColor.ColorNumber Set start) + this.fColorNumber = value; + // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Set end) - // *** End programmer edit section *** (LegoBlockColor.Name Set end) + // *** End programmer edit section *** (LegoBlockColor.ColorNumber Set end) } } - + /// - /// ColorNumber. + /// Name. /// - // *** Start programmer edit section *** (LegoBlockColor.ColorNumber CustomAttributes) + // *** Start programmer edit section *** (LegoBlockColor.Name CustomAttributes) - // *** End programmer edit section *** (LegoBlockColor.ColorNumber CustomAttributes) - public virtual int ColorNumber + // *** End programmer edit section *** (LegoBlockColor.Name CustomAttributes) + [StrLen(255)] + public virtual string Name { get { - // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Get start) + // *** Start programmer edit section *** (LegoBlockColor.Name Get start) - // *** End programmer edit section *** (LegoBlockColor.ColorNumber Get start) - int result = this.fColorNumber; - // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Get end) + // *** End programmer edit section *** (LegoBlockColor.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (LegoBlockColor.Name Get end) - // *** End programmer edit section *** (LegoBlockColor.ColorNumber Get end) + // *** End programmer edit section *** (LegoBlockColor.Name Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Set start) + // *** Start programmer edit section *** (LegoBlockColor.Name Set start) - // *** End programmer edit section *** (LegoBlockColor.ColorNumber Set start) - this.fColorNumber = value; - // *** Start programmer edit section *** (LegoBlockColor.ColorNumber Set end) + // *** End programmer edit section *** (LegoBlockColor.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (LegoBlockColor.Name Set end) - // *** End programmer edit section *** (LegoBlockColor.ColorNumber Set end) + // *** End programmer edit section *** (LegoBlockColor.Name Set end) } } } } + diff --git a/Tests/Objects/LegoBlockCustomPanel.cs b/Tests/Objects/LegoBlockCustomPanel.cs index 93a383d1..3d88f2f3 100644 --- a/Tests/Objects/LegoBlockCustomPanel.cs +++ b/Tests/Objects/LegoBlockCustomPanel.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,20 +28,20 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoBlockCustomPanel : ICSSoft.STORMNET.DataObject { - + private string fOrientation; - + private string fPosition; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoPanelAngle fPanelAngle; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock fBlock; - + // *** Start programmer edit section *** (LegoBlockCustomPanel CustomMembers) // *** End programmer edit section *** (LegoBlockCustomPanel CustomMembers) - + /// /// Orientation. /// @@ -76,7 +73,7 @@ public virtual string Orientation // *** End programmer edit section *** (LegoBlockCustomPanel.Orientation Set end) } } - + /// /// Position. /// @@ -108,7 +105,7 @@ public virtual string Position // *** End programmer edit section *** (LegoBlockCustomPanel.Position Set end) } } - + /// /// LegoBlockCustomPanel. /// @@ -141,7 +138,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoPanelAngle Panel // *** End programmer edit section *** (LegoBlockCustomPanel.PanelAngle Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock. /// @@ -177,7 +174,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock Block } } } - + /// /// Detail array of LegoBlockCustomPanel. /// @@ -186,12 +183,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock Block // *** End programmer edit section *** (DetailArrayDetailArrayOfLegoBlockCustomPanel CustomAttributes) public class DetailArrayOfLegoBlockCustomPanel : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockCustomPanel members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockCustomPanel members) - + /// /// Construct detail array. /// @@ -205,7 +202,7 @@ public DetailArrayOfLegoBlockCustomPanel(NewPlatform.Flexberry.ORM.ODataService. base(typeof(LegoBlockCustomPanel), ((ICSSoft.STORMNET.DataObject)(fLegoBlock))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockCustomPanel this[int index] { get @@ -213,10 +210,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockCustomPanel this[in return ((NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockCustomPanel)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockCustomPanel dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/LegoBlockTopPanel.cs b/Tests/Objects/LegoBlockTopPanel.cs index 64e423c9..00f25599 100644 --- a/Tests/Objects/LegoBlockTopPanel.cs +++ b/Tests/Objects/LegoBlockTopPanel.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,84 +28,84 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoBlockTopPanel : ICSSoft.STORMNET.DataObject { - - private int fWidthCount; - + private int fHeightCount; - + + private int fWidthCount; + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoSocketStandard fSocketStandard; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanelHole fHoles; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock fBlock; - + // *** Start programmer edit section *** (LegoBlockTopPanel CustomMembers) // *** End programmer edit section *** (LegoBlockTopPanel CustomMembers) - + /// - /// WidthCount. + /// HeightCount. /// - // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount CustomAttributes) + // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount CustomAttributes) - // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount CustomAttributes) - public virtual int WidthCount + // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount CustomAttributes) + public virtual int HeightCount { get { - // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Get start) + // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Get start) - // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Get start) - int result = this.fWidthCount; - // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Get end) + // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Get start) + int result = this.fHeightCount; + // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Get end) - // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Get end) + // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Set start) + // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Set start) - // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Set start) - this.fWidthCount = value; - // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Set end) + // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Set start) + this.fHeightCount = value; + // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Set end) - // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Set end) + // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Set end) } } - + /// - /// HeightCount. + /// WidthCount. /// - // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount CustomAttributes) + // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount CustomAttributes) - // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount CustomAttributes) - public virtual int HeightCount + // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount CustomAttributes) + public virtual int WidthCount { get { - // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Get start) + // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Get start) - // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Get start) - int result = this.fHeightCount; - // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Get end) + // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Get start) + int result = this.fWidthCount; + // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Get end) - // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Get end) + // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Get end) return result; } set { - // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Set start) + // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Set start) - // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Set start) - this.fHeightCount = value; - // *** Start programmer edit section *** (LegoBlockTopPanel.HeightCount Set end) + // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Set start) + this.fWidthCount = value; + // *** Start programmer edit section *** (LegoBlockTopPanel.WidthCount Set end) - // *** End programmer edit section *** (LegoBlockTopPanel.HeightCount Set end) + // *** End programmer edit section *** (LegoBlockTopPanel.WidthCount Set end) } } - + /// /// LegoBlockTopPanel. /// @@ -141,7 +138,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoSocketStandard S // *** End programmer edit section *** (LegoBlockTopPanel.SocketStandard Set end) } } - + /// /// LegoBlockTopPanel. /// @@ -176,7 +173,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlo // *** End programmer edit section *** (LegoBlockTopPanel.Holes Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock. /// @@ -212,7 +209,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock Block } } } - + /// /// Detail array of LegoBlockTopPanel. /// @@ -221,12 +218,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlock Block // *** End programmer edit section *** (DetailArrayDetailArrayOfLegoBlockTopPanel CustomAttributes) public class DetailArrayOfLegoBlockTopPanel : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanel members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanel members) - + /// /// Construct detail array. /// @@ -240,7 +237,7 @@ public DetailArrayOfLegoBlockTopPanel(NewPlatform.Flexberry.ORM.ODataService.Tes base(typeof(LegoBlockTopPanel), ((ICSSoft.STORMNET.DataObject)(fLegoBlock))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel this[int index] { get @@ -248,10 +245,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel this[int i return ((NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/LegoBlockTopPanelHole.cs b/Tests/Objects/LegoBlockTopPanelHole.cs index e5d1f77a..b55b7aa3 100644 --- a/Tests/Objects/LegoBlockTopPanelHole.cs +++ b/Tests/Objects/LegoBlockTopPanelHole.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,16 +28,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoBlockTopPanelHole : ICSSoft.STORMNET.DataObject { - + private string fPosition; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel fTopPanel; - + // *** Start programmer edit section *** (LegoBlockTopPanelHole CustomMembers) // *** End programmer edit section *** (LegoBlockTopPanelHole CustomMembers) - + /// /// Position. /// @@ -72,7 +69,7 @@ public virtual string Position // *** End programmer edit section *** (LegoBlockTopPanelHole.Position Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel. /// @@ -108,7 +105,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel To } } } - + /// /// Detail array of LegoBlockTopPanelHole. /// @@ -117,12 +114,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanel To // *** End programmer edit section *** (DetailArrayDetailArrayOfLegoBlockTopPanelHole CustomAttributes) public class DetailArrayOfLegoBlockTopPanelHole : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanelHole members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanelHole members) - + /// /// Construct detail array. /// @@ -136,7 +133,7 @@ public DetailArrayOfLegoBlockTopPanelHole(NewPlatform.Flexberry.ORM.ODataService base(typeof(LegoBlockTopPanelHole), ((ICSSoft.STORMNET.DataObject)(fLegoBlockTopPanel))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanelHole this[int index] { get @@ -144,10 +141,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanelHole this[i return ((NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanelHole)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockTopPanelHole dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/LegoDevice.cs b/Tests/Objects/LegoDevice.cs index 210923c8..8377e2fd 100644 --- a/Tests/Objects/LegoDevice.cs +++ b/Tests/Objects/LegoDevice.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -32,16 +29,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoDevice : NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBlock { - + private string fDescription; - + private bool fElectricity; - + // *** Start programmer edit section *** (LegoDevice CustomMembers) // *** End programmer edit section *** (LegoDevice CustomMembers) - + /// /// Description. /// @@ -73,7 +70,7 @@ public virtual string Description // *** End programmer edit section *** (LegoDevice.Description Set end) } } - + /// /// Electricity. /// @@ -106,3 +103,4 @@ public virtual bool Electricity } } } + diff --git a/Tests/Objects/LegoMaterial.cs b/Tests/Objects/LegoMaterial.cs index 7db2ab80..20a5f3ff 100644 --- a/Tests/Objects/LegoMaterial.cs +++ b/Tests/Objects/LegoMaterial.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,14 +28,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoMaterial : ICSSoft.STORMNET.DataObject { - + private string fName; - + // *** Start programmer edit section *** (LegoMaterial CustomMembers) // *** End programmer edit section *** (LegoMaterial CustomMembers) - + /// /// Name. /// @@ -72,3 +69,4 @@ public virtual string Name } } } + diff --git a/Tests/Objects/LegoPanelAngle.cs b/Tests/Objects/LegoPanelAngle.cs index 614d75f1..46d788e0 100644 --- a/Tests/Objects/LegoPanelAngle.cs +++ b/Tests/Objects/LegoPanelAngle.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,77 +28,78 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoPanelAngle : ICSSoft.STORMNET.DataObject { - - private string fName; - + private int fAngle; - + + private string fName; + // *** Start programmer edit section *** (LegoPanelAngle CustomMembers) // *** End programmer edit section *** (LegoPanelAngle CustomMembers) - + /// - /// Name. + /// Angle. /// - // *** Start programmer edit section *** (LegoPanelAngle.Name CustomAttributes) + // *** Start programmer edit section *** (LegoPanelAngle.Angle CustomAttributes) - // *** End programmer edit section *** (LegoPanelAngle.Name CustomAttributes) - [StrLen(255)] - public virtual string Name + // *** End programmer edit section *** (LegoPanelAngle.Angle CustomAttributes) + public virtual int Angle { get { - // *** Start programmer edit section *** (LegoPanelAngle.Name Get start) + // *** Start programmer edit section *** (LegoPanelAngle.Angle Get start) - // *** End programmer edit section *** (LegoPanelAngle.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (LegoPanelAngle.Name Get end) + // *** End programmer edit section *** (LegoPanelAngle.Angle Get start) + int result = this.fAngle; + // *** Start programmer edit section *** (LegoPanelAngle.Angle Get end) - // *** End programmer edit section *** (LegoPanelAngle.Name Get end) + // *** End programmer edit section *** (LegoPanelAngle.Angle Get end) return result; } set { - // *** Start programmer edit section *** (LegoPanelAngle.Name Set start) + // *** Start programmer edit section *** (LegoPanelAngle.Angle Set start) - // *** End programmer edit section *** (LegoPanelAngle.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (LegoPanelAngle.Name Set end) + // *** End programmer edit section *** (LegoPanelAngle.Angle Set start) + this.fAngle = value; + // *** Start programmer edit section *** (LegoPanelAngle.Angle Set end) - // *** End programmer edit section *** (LegoPanelAngle.Name Set end) + // *** End programmer edit section *** (LegoPanelAngle.Angle Set end) } } - + /// - /// Angle. + /// Name. /// - // *** Start programmer edit section *** (LegoPanelAngle.Angle CustomAttributes) + // *** Start programmer edit section *** (LegoPanelAngle.Name CustomAttributes) - // *** End programmer edit section *** (LegoPanelAngle.Angle CustomAttributes) - public virtual int Angle + // *** End programmer edit section *** (LegoPanelAngle.Name CustomAttributes) + [StrLen(255)] + public virtual string Name { get { - // *** Start programmer edit section *** (LegoPanelAngle.Angle Get start) + // *** Start programmer edit section *** (LegoPanelAngle.Name Get start) - // *** End programmer edit section *** (LegoPanelAngle.Angle Get start) - int result = this.fAngle; - // *** Start programmer edit section *** (LegoPanelAngle.Angle Get end) + // *** End programmer edit section *** (LegoPanelAngle.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (LegoPanelAngle.Name Get end) - // *** End programmer edit section *** (LegoPanelAngle.Angle Get end) + // *** End programmer edit section *** (LegoPanelAngle.Name Get end) return result; } set { - // *** Start programmer edit section *** (LegoPanelAngle.Angle Set start) + // *** Start programmer edit section *** (LegoPanelAngle.Name Set start) - // *** End programmer edit section *** (LegoPanelAngle.Angle Set start) - this.fAngle = value; - // *** Start programmer edit section *** (LegoPanelAngle.Angle Set end) + // *** End programmer edit section *** (LegoPanelAngle.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (LegoPanelAngle.Name Set end) - // *** End programmer edit section *** (LegoPanelAngle.Angle Set end) + // *** End programmer edit section *** (LegoPanelAngle.Name Set end) } } } } + diff --git a/Tests/Objects/LegoPatent.cs b/Tests/Objects/LegoPatent.cs index 7c39c1b8..d9894d4c 100644 --- a/Tests/Objects/LegoPatent.cs +++ b/Tests/Objects/LegoPatent.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,54 +28,54 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoPatent : ICSSoft.STORMNET.DataObject { - - private string fName; - - private System.DateTime fDate; - + private string fAuthors; - + + private System.DateTime fDate; + private string fDescription; - + + private string fName; + private NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBlock fBaseLegoBlock; - + // *** Start programmer edit section *** (LegoPatent CustomMembers) // *** End programmer edit section *** (LegoPatent CustomMembers) - + /// - /// Name. + /// Authors. /// - // *** Start programmer edit section *** (LegoPatent.Name CustomAttributes) + // *** Start programmer edit section *** (LegoPatent.Authors CustomAttributes) - // *** End programmer edit section *** (LegoPatent.Name CustomAttributes) + // *** End programmer edit section *** (LegoPatent.Authors CustomAttributes) [StrLen(255)] - public virtual string Name + public virtual string Authors { get { - // *** Start programmer edit section *** (LegoPatent.Name Get start) + // *** Start programmer edit section *** (LegoPatent.Authors Get start) - // *** End programmer edit section *** (LegoPatent.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (LegoPatent.Name Get end) + // *** End programmer edit section *** (LegoPatent.Authors Get start) + string result = this.fAuthors; + // *** Start programmer edit section *** (LegoPatent.Authors Get end) - // *** End programmer edit section *** (LegoPatent.Name Get end) + // *** End programmer edit section *** (LegoPatent.Authors Get end) return result; } set { - // *** Start programmer edit section *** (LegoPatent.Name Set start) + // *** Start programmer edit section *** (LegoPatent.Authors Set start) - // *** End programmer edit section *** (LegoPatent.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (LegoPatent.Name Set end) + // *** End programmer edit section *** (LegoPatent.Authors Set start) + this.fAuthors = value; + // *** Start programmer edit section *** (LegoPatent.Authors Set end) - // *** End programmer edit section *** (LegoPatent.Name Set end) + // *** End programmer edit section *** (LegoPatent.Authors Set end) } } - + /// /// Date. /// @@ -109,71 +106,71 @@ public virtual System.DateTime Date // *** End programmer edit section *** (LegoPatent.Date Set end) } } - + /// - /// Authors. + /// Description. /// - // *** Start programmer edit section *** (LegoPatent.Authors CustomAttributes) + // *** Start programmer edit section *** (LegoPatent.Description CustomAttributes) - // *** End programmer edit section *** (LegoPatent.Authors CustomAttributes) + // *** End programmer edit section *** (LegoPatent.Description CustomAttributes) [StrLen(255)] - public virtual string Authors + public virtual string Description { get { - // *** Start programmer edit section *** (LegoPatent.Authors Get start) + // *** Start programmer edit section *** (LegoPatent.Description Get start) - // *** End programmer edit section *** (LegoPatent.Authors Get start) - string result = this.fAuthors; - // *** Start programmer edit section *** (LegoPatent.Authors Get end) + // *** End programmer edit section *** (LegoPatent.Description Get start) + string result = this.fDescription; + // *** Start programmer edit section *** (LegoPatent.Description Get end) - // *** End programmer edit section *** (LegoPatent.Authors Get end) + // *** End programmer edit section *** (LegoPatent.Description Get end) return result; } set { - // *** Start programmer edit section *** (LegoPatent.Authors Set start) + // *** Start programmer edit section *** (LegoPatent.Description Set start) - // *** End programmer edit section *** (LegoPatent.Authors Set start) - this.fAuthors = value; - // *** Start programmer edit section *** (LegoPatent.Authors Set end) + // *** End programmer edit section *** (LegoPatent.Description Set start) + this.fDescription = value; + // *** Start programmer edit section *** (LegoPatent.Description Set end) - // *** End programmer edit section *** (LegoPatent.Authors Set end) + // *** End programmer edit section *** (LegoPatent.Description Set end) } } - + /// - /// Description. + /// Name. /// - // *** Start programmer edit section *** (LegoPatent.Description CustomAttributes) + // *** Start programmer edit section *** (LegoPatent.Name CustomAttributes) - // *** End programmer edit section *** (LegoPatent.Description CustomAttributes) + // *** End programmer edit section *** (LegoPatent.Name CustomAttributes) [StrLen(255)] - public virtual string Description + public virtual string Name { get { - // *** Start programmer edit section *** (LegoPatent.Description Get start) + // *** Start programmer edit section *** (LegoPatent.Name Get start) - // *** End programmer edit section *** (LegoPatent.Description Get start) - string result = this.fDescription; - // *** Start programmer edit section *** (LegoPatent.Description Get end) + // *** End programmer edit section *** (LegoPatent.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (LegoPatent.Name Get end) - // *** End programmer edit section *** (LegoPatent.Description Get end) + // *** End programmer edit section *** (LegoPatent.Name Get end) return result; } set { - // *** Start programmer edit section *** (LegoPatent.Description Set start) + // *** Start programmer edit section *** (LegoPatent.Name Set start) - // *** End programmer edit section *** (LegoPatent.Description Set start) - this.fDescription = value; - // *** Start programmer edit section *** (LegoPatent.Description Set end) + // *** End programmer edit section *** (LegoPatent.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (LegoPatent.Name Set end) - // *** End programmer edit section *** (LegoPatent.Description Set end) + // *** End programmer edit section *** (LegoPatent.Name Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBlock. /// @@ -213,7 +210,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBlock BaseLe } } } - + /// /// Detail array of LegoPatent. /// @@ -222,12 +219,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBlock BaseLe // *** End programmer edit section *** (DetailArrayDetailArrayOfLegoPatent CustomAttributes) public class DetailArrayOfLegoPatent : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoPatent members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoPatent members) - + /// /// Construct detail array. /// @@ -241,7 +238,7 @@ public DetailArrayOfLegoPatent(NewPlatform.Flexberry.ORM.ODataService.Tests.Base base(typeof(LegoPatent), ((ICSSoft.STORMNET.DataObject)(fBaseLegoBlock))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoPatent this[int index] { get @@ -249,10 +246,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.LegoPatent this[int index] return ((NewPlatform.Flexberry.ORM.ODataService.Tests.LegoPatent)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.LegoPatent dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/LegoSocketStandard.cs b/Tests/Objects/LegoSocketStandard.cs index d2b60439..67b80ed5 100644 --- a/Tests/Objects/LegoSocketStandard.cs +++ b/Tests/Objects/LegoSocketStandard.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -31,14 +28,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class LegoSocketStandard : ICSSoft.STORMNET.DataObject { - + private string fName; - + // *** Start programmer edit section *** (LegoSocketStandard CustomMembers) // *** End programmer edit section *** (LegoSocketStandard CustomMembers) - + /// /// Name. /// @@ -72,3 +69,4 @@ public virtual string Name } } } + diff --git a/Tests/Objects/MainClass.cs b/Tests/Objects/MainClass.cs index 7530a23e..fd49aca0 100644 --- a/Tests/Objects/MainClass.cs +++ b/Tests/Objects/MainClass.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,16 +27,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class MainClass : ICSSoft.STORMNET.DataObject { - + private string fName; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass1 fAgrClass1; - + // *** Start programmer edit section *** (MainClass CustomMembers) // *** End programmer edit section *** (MainClass CustomMembers) - + /// /// Name. /// @@ -71,7 +68,7 @@ public virtual string Name // *** End programmer edit section *** (MainClass.Name Set end) } } - + /// /// MainClass. /// @@ -107,3 +104,4 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.AgrClass1 AgrClass1 } } } + diff --git a/Tests/Objects/Master.cs b/Tests/Objects/Master.cs index 6ee0662d..5a7ad425 100644 --- a/Tests/Objects/Master.cs +++ b/Tests/Objects/Master.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,14 +27,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class Master : ICSSoft.STORMNET.DataObject { - + private string fproperty; - + // *** Start programmer edit section *** (Master CustomMembers) // *** End programmer edit section *** (Master CustomMembers) - + /// /// property. /// @@ -71,3 +68,4 @@ public virtual string property } } } + diff --git a/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj b/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj index dbe5b2c5..261bb61e 100644 --- a/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj +++ b/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj @@ -14,10 +14,10 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Tests/Objects/Person.cs b/Tests/Objects/Person.cs index 18ebcce6..e8c007eb 100644 --- a/Tests/Objects/Person.cs +++ b/Tests/Objects/Person.cs @@ -1,114 +1,112 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Person. - /// - // *** Start programmer edit section *** (Person CustomAttributes) - - // *** End programmer edit section *** (Person CustomAttributes) - [PublishName("Person")] - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class Person : ICSSoft.STORMNET.DataObject - { - - private string fName; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild fChildrens; - - // *** Start programmer edit section *** (Person CustomMembers) - - // *** End programmer edit section *** (Person CustomMembers) - - - /// - /// Name. - /// - // *** Start programmer edit section *** (Person.Name CustomAttributes) - - // *** End programmer edit section *** (Person.Name CustomAttributes) - [StrLen(255)] - public virtual string Name - { - get - { - // *** Start programmer edit section *** (Person.Name Get start) - - // *** End programmer edit section *** (Person.Name Get start) - string result = this.fName; - // *** Start programmer edit section *** (Person.Name Get end) - - // *** End programmer edit section *** (Person.Name Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Person.Name Set start) - - // *** End programmer edit section *** (Person.Name Set start) - this.fName = value; - // *** Start programmer edit section *** (Person.Name Set end) - - // *** End programmer edit section *** (Person.Name Set end) - } - } - - /// - /// Person. - /// - // *** Start programmer edit section *** (Person.Childrens CustomAttributes) - - // *** End programmer edit section *** (Person.Childrens CustomAttributes) - [TypeUsage(new System.Type[] { - typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Daughter), - typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Son)})] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild Childrens - { - get - { - // *** Start programmer edit section *** (Person.Childrens Get start) - - // *** End programmer edit section *** (Person.Childrens Get start) - if ((this.fChildrens == null)) - { - this.fChildrens = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild(this); - } - NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild result = this.fChildrens; - // *** Start programmer edit section *** (Person.Childrens Get end) - - // *** End programmer edit section *** (Person.Childrens Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Person.Childrens Set start) - - // *** End programmer edit section *** (Person.Childrens Set start) - this.fChildrens = value; - // *** Start programmer edit section *** (Person.Childrens Set end) - - // *** End programmer edit section *** (Person.Childrens Set end) - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Person. + /// + // *** Start programmer edit section *** (Person CustomAttributes) + + // *** End programmer edit section *** (Person CustomAttributes) + [PublishName("Person")] + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class Person : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild fChildrens; + + // *** Start programmer edit section *** (Person CustomMembers) + + // *** End programmer edit section *** (Person CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (Person.Name CustomAttributes) + + // *** End programmer edit section *** (Person.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (Person.Name Get start) + + // *** End programmer edit section *** (Person.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (Person.Name Get end) + + // *** End programmer edit section *** (Person.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Person.Name Set start) + + // *** End programmer edit section *** (Person.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (Person.Name Set end) + + // *** End programmer edit section *** (Person.Name Set end) + } + } + + /// + /// Person. + /// + // *** Start programmer edit section *** (Person.Childrens CustomAttributes) + + // *** End programmer edit section *** (Person.Childrens CustomAttributes) + [TypeUsage(new System.Type[] { + typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Daughter), + typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Son)})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild Childrens + { + get + { + // *** Start programmer edit section *** (Person.Childrens Get start) + + // *** End programmer edit section *** (Person.Childrens Get start) + if ((this.fChildrens == null)) + { + this.fChildrens = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfChild result = this.fChildrens; + // *** Start programmer edit section *** (Person.Childrens Get end) + + // *** End programmer edit section *** (Person.Childrens Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Person.Childrens Set start) + + // *** End programmer edit section *** (Person.Childrens Set start) + this.fChildrens = value; + // *** Start programmer edit section *** (Person.Childrens Set end) + + // *** End programmer edit section *** (Person.Childrens Set end) + } + } + } +} + diff --git a/Tests/Objects/SecondLevel1.cs b/Tests/Objects/SecondLevel1.cs new file mode 100644 index 00000000..3645355f --- /dev/null +++ b/Tests/Objects/SecondLevel1.cs @@ -0,0 +1,150 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// SecondLevel1. + /// + // *** Start programmer edit section *** (SecondLevel1 CustomAttributes) + + // *** End programmer edit section *** (SecondLevel1 CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class SecondLevel1 : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel fFirstLevel; + + // *** Start programmer edit section *** (SecondLevel1 CustomMembers) + + // *** End programmer edit section *** (SecondLevel1 CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (SecondLevel1.Name CustomAttributes) + + // *** End programmer edit section *** (SecondLevel1.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (SecondLevel1.Name Get start) + + // *** End programmer edit section *** (SecondLevel1.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (SecondLevel1.Name Get end) + + // *** End programmer edit section *** (SecondLevel1.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (SecondLevel1.Name Set start) + + // *** End programmer edit section *** (SecondLevel1.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (SecondLevel1.Name Set end) + + // *** End programmer edit section *** (SecondLevel1.Name Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel. + /// + // *** Start programmer edit section *** (SecondLevel1.FirstLevel CustomAttributes) + + // *** End programmer edit section *** (SecondLevel1.FirstLevel CustomAttributes) + [Agregator()] + [NotNull()] + [PropertyStorage(new string[] { + "FirstLevel"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel FirstLevel + { + get + { + // *** Start programmer edit section *** (SecondLevel1.FirstLevel Get start) + + // *** End programmer edit section *** (SecondLevel1.FirstLevel Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel result = this.fFirstLevel; + // *** Start programmer edit section *** (SecondLevel1.FirstLevel Get end) + + // *** End programmer edit section *** (SecondLevel1.FirstLevel Get end) + return result; + } + set + { + // *** Start programmer edit section *** (SecondLevel1.FirstLevel Set start) + + // *** End programmer edit section *** (SecondLevel1.FirstLevel Set start) + this.fFirstLevel = value; + // *** Start programmer edit section *** (SecondLevel1.FirstLevel Set end) + + // *** End programmer edit section *** (SecondLevel1.FirstLevel Set end) + } + } + } + + /// + /// Detail array of SecondLevel1. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfSecondLevel1 CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfSecondLevel1 CustomAttributes) + public class DetailArrayOfSecondLevel1 : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel1 members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel1 members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type SecondLevel1 by index. + /// + /// + /// Adds object with type SecondLevel1. + /// + public DetailArrayOfSecondLevel1(NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel fFirstLevel) : + base(typeof(SecondLevel1), ((ICSSoft.STORMNET.DataObject)(fFirstLevel))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1 this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1 dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git a/Tests/Objects/SecondLevel2.cs b/Tests/Objects/SecondLevel2.cs new file mode 100644 index 00000000..3209fe77 --- /dev/null +++ b/Tests/Objects/SecondLevel2.cs @@ -0,0 +1,188 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// SecondLevel2. + /// + // *** Start programmer edit section *** (SecondLevel2 CustomAttributes) + + // *** End programmer edit section *** (SecondLevel2 CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class SecondLevel2 : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1 fSecondLevel1; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel fFirstLevel; + + // *** Start programmer edit section *** (SecondLevel2 CustomMembers) + + // *** End programmer edit section *** (SecondLevel2 CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (SecondLevel2.Name CustomAttributes) + + // *** End programmer edit section *** (SecondLevel2.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (SecondLevel2.Name Get start) + + // *** End programmer edit section *** (SecondLevel2.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (SecondLevel2.Name Get end) + + // *** End programmer edit section *** (SecondLevel2.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (SecondLevel2.Name Set start) + + // *** End programmer edit section *** (SecondLevel2.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (SecondLevel2.Name Set end) + + // *** End programmer edit section *** (SecondLevel2.Name Set end) + } + } + + /// + /// SecondLevel2. + /// + // *** Start programmer edit section *** (SecondLevel2.SecondLevel1 CustomAttributes) + + // *** End programmer edit section *** (SecondLevel2.SecondLevel1 CustomAttributes) + [PropertyStorage("SecondLevel1")] + [TypeUsage(new string[] { + "NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1", + "NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass"})] + [NotNull()] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1 SecondLevel1 + { + get + { + // *** Start programmer edit section *** (SecondLevel2.SecondLevel1 Get start) + + // *** End programmer edit section *** (SecondLevel2.SecondLevel1 Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1 result = this.fSecondLevel1; + // *** Start programmer edit section *** (SecondLevel2.SecondLevel1 Get end) + + // *** End programmer edit section *** (SecondLevel2.SecondLevel1 Get end) + return result; + } + set + { + // *** Start programmer edit section *** (SecondLevel2.SecondLevel1 Set start) + + // *** End programmer edit section *** (SecondLevel2.SecondLevel1 Set start) + this.fSecondLevel1 = value; + // *** Start programmer edit section *** (SecondLevel2.SecondLevel1 Set end) + + // *** End programmer edit section *** (SecondLevel2.SecondLevel1 Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel. + /// + // *** Start programmer edit section *** (SecondLevel2.FirstLevel CustomAttributes) + + // *** End programmer edit section *** (SecondLevel2.FirstLevel CustomAttributes) + [Agregator()] + [NotNull()] + [PropertyStorage(new string[] { + "FirstLevel"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel FirstLevel + { + get + { + // *** Start programmer edit section *** (SecondLevel2.FirstLevel Get start) + + // *** End programmer edit section *** (SecondLevel2.FirstLevel Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel result = this.fFirstLevel; + // *** Start programmer edit section *** (SecondLevel2.FirstLevel Get end) + + // *** End programmer edit section *** (SecondLevel2.FirstLevel Get end) + return result; + } + set + { + // *** Start programmer edit section *** (SecondLevel2.FirstLevel Set start) + + // *** End programmer edit section *** (SecondLevel2.FirstLevel Set start) + this.fFirstLevel = value; + // *** Start programmer edit section *** (SecondLevel2.FirstLevel Set end) + + // *** End programmer edit section *** (SecondLevel2.FirstLevel Set end) + } + } + } + + /// + /// Detail array of SecondLevel2. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfSecondLevel2 CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfSecondLevel2 CustomAttributes) + public class DetailArrayOfSecondLevel2 : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel2 members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfSecondLevel2 members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type SecondLevel2 by index. + /// + /// + /// Adds object with type SecondLevel2. + /// + public DetailArrayOfSecondLevel2(NewPlatform.Flexberry.ORM.ODataService.Tests.FirstLevel fFirstLevel) : + base(typeof(SecondLevel2), ((ICSSoft.STORMNET.DataObject)(fFirstLevel))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel2 this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel2)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel2 dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git a/Tests/Objects/Son.cs b/Tests/Objects/Son.cs index 387e8e9b..37e0ef4c 100644 --- a/Tests/Objects/Son.cs +++ b/Tests/Objects/Son.cs @@ -1,75 +1,73 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Son. - /// - // *** Start programmer edit section *** (Son CustomAttributes) - - // *** End programmer edit section *** (Son CustomAttributes) - [PublishName("Son")] - [AutoAltered()] - [ICSSoft.STORMNET.NotStored(false)] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class Son : NewPlatform.Flexberry.ORM.ODataService.Tests.Child - { - - private string fSuspendersColor; - - // *** Start programmer edit section *** (Son CustomMembers) - - // *** End programmer edit section *** (Son CustomMembers) - - - /// - /// SuspendersColor. - /// - // *** Start programmer edit section *** (Son.SuspendersColor CustomAttributes) - - // *** End programmer edit section *** (Son.SuspendersColor CustomAttributes) - [StrLen(255)] - public virtual string SuspendersColor - { - get - { - // *** Start programmer edit section *** (Son.SuspendersColor Get start) - - // *** End programmer edit section *** (Son.SuspendersColor Get start) - string result = this.fSuspendersColor; - // *** Start programmer edit section *** (Son.SuspendersColor Get end) - - // *** End programmer edit section *** (Son.SuspendersColor Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Son.SuspendersColor Set start) - - // *** End programmer edit section *** (Son.SuspendersColor Set start) - this.fSuspendersColor = value; - // *** Start programmer edit section *** (Son.SuspendersColor Set end) - - // *** End programmer edit section *** (Son.SuspendersColor Set end) - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Son. + /// + // *** Start programmer edit section *** (Son CustomAttributes) + + // *** End programmer edit section *** (Son CustomAttributes) + [PublishName("Son")] + [AutoAltered()] + [ICSSoft.STORMNET.NotStored(false)] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class Son : NewPlatform.Flexberry.ORM.ODataService.Tests.Child + { + + private string fSuspendersColor; + + // *** Start programmer edit section *** (Son CustomMembers) + + // *** End programmer edit section *** (Son CustomMembers) + + + /// + /// SuspendersColor. + /// + // *** Start programmer edit section *** (Son.SuspendersColor CustomAttributes) + + // *** End programmer edit section *** (Son.SuspendersColor CustomAttributes) + [StrLen(255)] + public virtual string SuspendersColor + { + get + { + // *** Start programmer edit section *** (Son.SuspendersColor Get start) + + // *** End programmer edit section *** (Son.SuspendersColor Get start) + string result = this.fSuspendersColor; + // *** Start programmer edit section *** (Son.SuspendersColor Get end) + + // *** End programmer edit section *** (Son.SuspendersColor Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Son.SuspendersColor Set start) + + // *** End programmer edit section *** (Son.SuspendersColor Set start) + this.fSuspendersColor = value; + // *** Start programmer edit section *** (Son.SuspendersColor Set end) + + // *** End programmer edit section *** (Son.SuspendersColor Set end) + } + } + } +} + diff --git a/Tests/Objects/TestAssociation.cs b/Tests/Objects/TestAssociation.cs new file mode 100644 index 00000000..130a4707 --- /dev/null +++ b/Tests/Objects/TestAssociation.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// TestAssociation. + /// + // *** Start programmer edit section *** (TestAssociation CustomAttributes) + + // *** End programmer edit section *** (TestAssociation CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class TestAssociation : NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel2 + { + + private string fName2; + + // *** Start programmer edit section *** (TestAssociation CustomMembers) + + // *** End programmer edit section *** (TestAssociation CustomMembers) + + + /// + /// Name2. + /// + // *** Start programmer edit section *** (TestAssociation.Name2 CustomAttributes) + + // *** End programmer edit section *** (TestAssociation.Name2 CustomAttributes) + [StrLen(255)] + public virtual string Name2 + { + get + { + // *** Start programmer edit section *** (TestAssociation.Name2 Get start) + + // *** End programmer edit section *** (TestAssociation.Name2 Get start) + string result = this.fName2; + // *** Start programmer edit section *** (TestAssociation.Name2 Get end) + + // *** End programmer edit section *** (TestAssociation.Name2 Get end) + return result; + } + set + { + // *** Start programmer edit section *** (TestAssociation.Name2 Set start) + + // *** End programmer edit section *** (TestAssociation.Name2 Set start) + this.fName2 = value; + // *** Start programmer edit section *** (TestAssociation.Name2 Set end) + + // *** End programmer edit section *** (TestAssociation.Name2 Set end) + } + } + } +} + diff --git a/Tests/Objects/TestClass.cs b/Tests/Objects/TestClass.cs new file mode 100644 index 00000000..9981ec17 --- /dev/null +++ b/Tests/Objects/TestClass.cs @@ -0,0 +1,106 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// TestClass. + /// + // *** Start programmer edit section *** (TestClass CustomAttributes) + + // *** End programmer edit section *** (TestClass CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class TestClass : NewPlatform.Flexberry.ORM.ODataService.Tests.SecondLevel1 + { + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfThirdLevel fThirdLevel; + + // *** Start programmer edit section *** (TestClass CustomMembers) + + // *** End programmer edit section *** (TestClass CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (TestClass.Name CustomAttributes) + + // *** End programmer edit section *** (TestClass.Name CustomAttributes) + [StrLen(255)] + public override string Name + { + get + { + // *** Start programmer edit section *** (TestClass.Name Get start) + + // *** End programmer edit section *** (TestClass.Name Get start) + string result = base.Name; + // *** Start programmer edit section *** (TestClass.Name Get end) + + // *** End programmer edit section *** (TestClass.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (TestClass.Name Set start) + + // *** End programmer edit section *** (TestClass.Name Set start) + base.Name = value; + // *** Start programmer edit section *** (TestClass.Name Set end) + + // *** End programmer edit section *** (TestClass.Name Set end) + } + } + + /// + /// TestClass. + /// + // *** Start programmer edit section *** (TestClass.ThirdLevel CustomAttributes) + + // *** End programmer edit section *** (TestClass.ThirdLevel CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfThirdLevel ThirdLevel + { + get + { + // *** Start programmer edit section *** (TestClass.ThirdLevel Get start) + + // *** End programmer edit section *** (TestClass.ThirdLevel Get start) + if ((this.fThirdLevel == null)) + { + this.fThirdLevel = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfThirdLevel(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfThirdLevel result = this.fThirdLevel; + // *** Start programmer edit section *** (TestClass.ThirdLevel Get end) + + // *** End programmer edit section *** (TestClass.ThirdLevel Get end) + return result; + } + set + { + // *** Start programmer edit section *** (TestClass.ThirdLevel Set start) + + // *** End programmer edit section *** (TestClass.ThirdLevel Set start) + this.fThirdLevel = value; + // *** Start programmer edit section *** (TestClass.ThirdLevel Set end) + + // *** End programmer edit section *** (TestClass.ThirdLevel Set end) + } + } + } +} + diff --git a/Tests/Objects/TestConfiguration.cs b/Tests/Objects/TestConfiguration.cs new file mode 100644 index 00000000..bd3d0ea4 --- /dev/null +++ b/Tests/Objects/TestConfiguration.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// TestConfiguration. + /// + // *** Start programmer edit section *** (TestConfiguration CustomAttributes) + + // *** End programmer edit section *** (TestConfiguration CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class TestConfiguration : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfFirstLevel fFirstLevel; + + // *** Start programmer edit section *** (TestConfiguration CustomMembers) + + // *** End programmer edit section *** (TestConfiguration CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (TestConfiguration.Name CustomAttributes) + + // *** End programmer edit section *** (TestConfiguration.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (TestConfiguration.Name Get start) + + // *** End programmer edit section *** (TestConfiguration.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (TestConfiguration.Name Get end) + + // *** End programmer edit section *** (TestConfiguration.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (TestConfiguration.Name Set start) + + // *** End programmer edit section *** (TestConfiguration.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (TestConfiguration.Name Set end) + + // *** End programmer edit section *** (TestConfiguration.Name Set end) + } + } + + /// + /// TestConfiguration. + /// + // *** Start programmer edit section *** (TestConfiguration.FirstLevel CustomAttributes) + + // *** End programmer edit section *** (TestConfiguration.FirstLevel CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfFirstLevel FirstLevel + { + get + { + // *** Start programmer edit section *** (TestConfiguration.FirstLevel Get start) + + // *** End programmer edit section *** (TestConfiguration.FirstLevel Get start) + if ((this.fFirstLevel == null)) + { + this.fFirstLevel = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfFirstLevel(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfFirstLevel result = this.fFirstLevel; + // *** Start programmer edit section *** (TestConfiguration.FirstLevel Get end) + + // *** End programmer edit section *** (TestConfiguration.FirstLevel Get end) + return result; + } + set + { + // *** Start programmer edit section *** (TestConfiguration.FirstLevel Set start) + + // *** End programmer edit section *** (TestConfiguration.FirstLevel Set start) + this.fFirstLevel = value; + // *** Start programmer edit section *** (TestConfiguration.FirstLevel Set end) + + // *** End programmer edit section *** (TestConfiguration.FirstLevel Set end) + } + } + } +} + diff --git a/Tests/Objects/TestDetailWithCicle.cs b/Tests/Objects/TestDetailWithCicle.cs index bfaedbab..245b3551 100644 --- a/Tests/Objects/TestDetailWithCicle.cs +++ b/Tests/Objects/TestDetailWithCicle.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -42,18 +39,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Parent.TestDetailName"})] public class TestDetailWithCicle : ICSSoft.STORMNET.DataObject { - + private string fTestDetailName; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle fParent; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.TestMaster fTestMaster; - + // *** Start programmer edit section *** (TestDetailWithCicle CustomMembers) // *** End programmer edit section *** (TestDetailWithCicle CustomMembers) - + /// /// TestDetailName. /// @@ -85,7 +82,7 @@ public virtual string TestDetailName // *** End programmer edit section *** (TestDetailWithCicle.TestDetailName Set end) } } - + /// /// TestDetailWithCicle. /// @@ -118,7 +115,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle // *** End programmer edit section *** (TestDetailWithCicle.Parent Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.TestMaster. /// @@ -153,13 +150,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.TestMaster TestMaste // *** End programmer edit section *** (TestDetailWithCicle.TestMaster Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "TestDetailWithCicleE" view. /// @@ -170,7 +167,7 @@ public static ICSSoft.STORMNET.View TestDetailWithCicleE return ICSSoft.STORMNET.Information.GetView("TestDetailWithCicleE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle)); } } - + /// /// "TestDetaiWithCicleL" view. /// @@ -183,7 +180,7 @@ public static ICSSoft.STORMNET.View TestDetaiWithCicleL } } } - + /// /// Detail array of TestDetailWithCicle. /// @@ -192,12 +189,12 @@ public static ICSSoft.STORMNET.View TestDetaiWithCicleL // *** End programmer edit section *** (DetailArrayDetailArrayOfTestDetailWithCicle CustomAttributes) public class DetailArrayOfTestDetailWithCicle : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfTestDetailWithCicle members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfTestDetailWithCicle members) - + /// /// Construct detail array. /// @@ -211,7 +208,7 @@ public DetailArrayOfTestDetailWithCicle(NewPlatform.Flexberry.ORM.ODataService.T base(typeof(TestDetailWithCicle), ((ICSSoft.STORMNET.DataObject)(fTestMaster))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle this[int index] { get @@ -219,10 +216,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle this[int return ((NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.TestDetailWithCicle dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git a/Tests/Objects/TestMaster.cs b/Tests/Objects/TestMaster.cs index f894f6b5..0d957b26 100644 --- a/Tests/Objects/TestMaster.cs +++ b/Tests/Objects/TestMaster.cs @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -34,16 +31,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "TestMasterName"})] public class TestMaster : ICSSoft.STORMNET.DataObject { - + private string fTestMasterName; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfTestDetailWithCicle fTestDetailWithCicle; - + // *** Start programmer edit section *** (TestMaster CustomMembers) // *** End programmer edit section *** (TestMaster CustomMembers) - + /// /// TestMasterName. /// @@ -75,7 +72,7 @@ public virtual string TestMasterName // *** End programmer edit section *** (TestMaster.TestMasterName Set end) } } - + /// /// TestMaster. /// @@ -110,13 +107,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfTestDet // *** End programmer edit section *** (TestMaster.TestDetailWithCicle Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "TestMasterE" view. /// @@ -127,7 +124,7 @@ public static ICSSoft.STORMNET.View TestMasterE return ICSSoft.STORMNET.Information.GetView("TestMasterE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.TestMaster)); } } - + /// /// "TestMasterL" view. /// @@ -141,3 +138,4 @@ public static ICSSoft.STORMNET.View TestMasterL } } } + diff --git a/Tests/Objects/ThirdLevel.cs b/Tests/Objects/ThirdLevel.cs new file mode 100644 index 00000000..448915d5 --- /dev/null +++ b/Tests/Objects/ThirdLevel.cs @@ -0,0 +1,150 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// ThirdLevel. + /// + // *** Start programmer edit section *** (ThirdLevel CustomAttributes) + + // *** End programmer edit section *** (ThirdLevel CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class ThirdLevel : ICSSoft.STORMNET.DataObject + { + + private string fName; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass fTestClass; + + // *** Start programmer edit section *** (ThirdLevel CustomMembers) + + // *** End programmer edit section *** (ThirdLevel CustomMembers) + + + /// + /// Name. + /// + // *** Start programmer edit section *** (ThirdLevel.Name CustomAttributes) + + // *** End programmer edit section *** (ThirdLevel.Name CustomAttributes) + [StrLen(255)] + public virtual string Name + { + get + { + // *** Start programmer edit section *** (ThirdLevel.Name Get start) + + // *** End programmer edit section *** (ThirdLevel.Name Get start) + string result = this.fName; + // *** Start programmer edit section *** (ThirdLevel.Name Get end) + + // *** End programmer edit section *** (ThirdLevel.Name Get end) + return result; + } + set + { + // *** Start programmer edit section *** (ThirdLevel.Name Set start) + + // *** End programmer edit section *** (ThirdLevel.Name Set start) + this.fName = value; + // *** Start programmer edit section *** (ThirdLevel.Name Set end) + + // *** End programmer edit section *** (ThirdLevel.Name Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass. + /// + // *** Start programmer edit section *** (ThirdLevel.TestClass CustomAttributes) + + // *** End programmer edit section *** (ThirdLevel.TestClass CustomAttributes) + [Agregator()] + [NotNull()] + [PropertyStorage(new string[] { + "TestClass"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass TestClass + { + get + { + // *** Start programmer edit section *** (ThirdLevel.TestClass Get start) + + // *** End programmer edit section *** (ThirdLevel.TestClass Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass result = this.fTestClass; + // *** Start programmer edit section *** (ThirdLevel.TestClass Get end) + + // *** End programmer edit section *** (ThirdLevel.TestClass Get end) + return result; + } + set + { + // *** Start programmer edit section *** (ThirdLevel.TestClass Set start) + + // *** End programmer edit section *** (ThirdLevel.TestClass Set start) + this.fTestClass = value; + // *** Start programmer edit section *** (ThirdLevel.TestClass Set end) + + // *** End programmer edit section *** (ThirdLevel.TestClass Set end) + } + } + } + + /// + /// Detail array of ThirdLevel. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfThirdLevel CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfThirdLevel CustomAttributes) + public class DetailArrayOfThirdLevel : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfThirdLevel members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfThirdLevel members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type ThirdLevel by index. + /// + /// + /// Adds object with type ThirdLevel. + /// + public DetailArrayOfThirdLevel(NewPlatform.Flexberry.ORM.ODataService.Tests.TestClass fTestClass) : + base(typeof(ThirdLevel), ((ICSSoft.STORMNET.DataObject)(fTestClass))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.ThirdLevel this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.ThirdLevel)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.ThirdLevel dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git a/Tests/Objects/tTip.cs b/Tests/Objects/tTip.cs index fc34b87f..82e092b3 100644 --- a/Tests/Objects/tTip.cs +++ b/Tests/Objects/tTip.cs @@ -1,19 +1,16 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -27,45 +24,46 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests // *** End programmer edit section *** (tTip CustomAttributes) public enum tTip { - + // *** Start programmer edit section *** (tTip.sedan CustomAttributes) // *** End programmer edit section *** (tTip.sedan CustomAttributes) sedan, - + // *** Start programmer edit section *** (tTip.cabriolet CustomAttributes) // *** End programmer edit section *** (tTip.cabriolet CustomAttributes) cabriolet, - + // *** Start programmer edit section *** (tTip.coupe CustomAttributes) // *** End programmer edit section *** (tTip.coupe CustomAttributes) coupe, - + // *** Start programmer edit section *** (tTip.pickup CustomAttributes) // *** End programmer edit section *** (tTip.pickup CustomAttributes) pickup, - + // *** Start programmer edit section *** (tTip.crossover CustomAttributes) // *** End programmer edit section *** (tTip.crossover CustomAttributes) crossover, - + // *** Start programmer edit section *** (tTip.limousine CustomAttributes) // *** End programmer edit section *** (tTip.limousine CustomAttributes) limousine, - + // *** Start programmer edit section *** (tTip.roadster CustomAttributes) // *** End programmer edit section *** (tTip.roadster CustomAttributes) roadster, - + // *** Start programmer edit section *** (tTip.minivan CustomAttributes) // *** End programmer edit section *** (tTip.minivan CustomAttributes) minivan, } } + diff --git "a/Tests/Objects/t\320\237\320\276\320\273.cs" "b/Tests/Objects/t\320\237\320\276\320\273.cs" index 5ca7616e..6cc5a5a9 100644 --- "a/Tests/Objects/t\320\237\320\276\320\273.cs" +++ "b/Tests/Objects/t\320\237\320\276\320\273.cs" @@ -1,19 +1,16 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -27,20 +24,21 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests // *** End programmer edit section *** (tПол CustomAttributes) public enum tПол { - + // *** Start programmer edit section *** (tПол.Мужской CustomAttributes) // *** End programmer edit section *** (tПол.Мужской CustomAttributes) Мужской, - + // *** Start programmer edit section *** (tПол.Женский CustomAttributes) // *** End programmer edit section *** (tПол.Женский CustomAttributes) Женский, - + // *** Start programmer edit section *** (tПол.НеПонятно CustomAttributes) // *** End programmer edit section *** (tПол.НеПонятно CustomAttributes) НеПонятно, } } + diff --git "a/Tests/Objects/\320\220\320\262\321\202\320\276\321\200.cs" "b/Tests/Objects/\320\220\320\262\321\202\320\276\321\200.cs" index 839b8dc7..a8622df0 100644 --- "a/Tests/Objects/\320\220\320\262\321\202\320\276\321\200.cs" +++ "b/Tests/Objects/\320\220\320\262\321\202\320\276\321\200.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -32,14 +29,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Имя as \'Имя\'"})] public class Автор : ICSSoft.STORMNET.DataObject { - + private string fИмя; - + // *** Start programmer edit section *** (Автор CustomMembers) // *** End programmer edit section *** (Автор CustomMembers) - + /// /// Имя. /// @@ -71,13 +68,13 @@ public virtual string Имя // *** End programmer edit section *** (Автор.Имя Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "View" view. /// @@ -91,3 +88,4 @@ public static ICSSoft.STORMNET.View View } } } + diff --git "a/Tests/Objects/\320\221\320\260\320\267\320\276\320\262\321\213\320\271\320\232\320\273\320\260\321\201\321\201.cs" "b/Tests/Objects/\320\221\320\260\320\267\320\276\320\262\321\213\320\271\320\232\320\273\320\260\321\201\321\201.cs" index c7f68279..ccaa0775 100644 --- "a/Tests/Objects/\320\221\320\260\320\267\320\276\320\262\321\213\320\271\320\232\320\273\320\260\321\201\321\201.cs" +++ "b/Tests/Objects/\320\221\320\260\320\267\320\276\320\262\321\213\320\271\320\232\320\273\320\260\321\201\321\201.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -34,18 +31,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests ""})] public class БазовыйКласс : ICSSoft.STORMNET.DataObject { - + private string fСвойство1; - + private int fСвойство2; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДетейл fДетейл; - + // *** Start programmer edit section *** (БазовыйКласс CustomMembers) // *** End programmer edit section *** (БазовыйКласс CustomMembers) - + /// /// Свойство1. /// @@ -77,7 +74,7 @@ public virtual string Свойство1 // *** End programmer edit section *** (БазовыйКласс.Свойство1 Set end) } } - + /// /// Свойство2. /// @@ -108,7 +105,7 @@ public virtual int Свойство2 // *** End programmer edit section *** (БазовыйКласс.Свойство2 Set end) } } - + /// /// БазовыйКласс. /// @@ -146,13 +143,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДет // *** End programmer edit section *** (БазовыйКласс.Детейл Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "БазовыйКлассE" view. /// @@ -166,3 +163,4 @@ public static ICSSoft.STORMNET.View БазовыйКлассE } } } + diff --git "a/Tests/Objects/\320\221\320\265\321\200\320\273\320\276\320\263\320\260.cs" "b/Tests/Objects/\320\221\320\265\321\200\320\273\320\276\320\263\320\260.cs" index 303fb817..7dcc108c 100644 --- "a/Tests/Objects/\320\221\320\265\321\200\320\273\320\276\320\263\320\260.cs" +++ "b/Tests/Objects/\320\221\320\265\321\200\320\273\320\276\320\263\320\260.cs" @@ -1,21 +1,18 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET.Business; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -25,7 +22,12 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests /// Берлога. /// // *** Start programmer edit section *** (Берлога CustomAttributes) - + [View("БерлогаDefaultView", new string[] { + "ПолеБС", + "Наименование as \'Наименование\'", + "Комфортность as \'Комфортность\'", + "Заброшена as \'Заброшена\'", + "ПолеБС"})] // *** End programmer edit section *** (Берлога CustomAttributes) [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.DenBS, NewPlatform.Flexberry.ORM.ODa" + "taService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] @@ -48,158 +50,163 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Сертификат", "СертификатСтрока"})] [MasterViewDefineAttribute("БерлогаE", "ЛесРасположения", ICSSoft.STORMNET.LookupTypeEnum.Standard, "", "Название")] + [View("БерлогаUpdateView", new string[] { + "Наименование as \'Наименование\'", + "Комфортность as \'Комфортность\'", + "Заброшена as \'Заброшена\'", + "ПолеБС"})] public class Берлога : ICSSoft.STORMNET.DataObject { - - private string fПолеБС; - - private string fНаименование; - - private int fКомфортность; - + private bool fЗаброшена; - + + private int fКомфортность; + + private string fНаименование; + + private string fПолеБС; + private ICSSoft.STORMNET.UserDataTypes.WebFile fСертификат; - + private string fСертификатСтрока; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Лес fЛесРасположения; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Порода fПодходитДляПороды; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь fМедведь; - + // *** Start programmer edit section *** (Берлога CustomMembers) // *** End programmer edit section *** (Берлога CustomMembers) - + /// - /// ПолеБС. + /// Заброшена. /// - // *** Start programmer edit section *** (Берлога.ПолеБС CustomAttributes) + // *** Start programmer edit section *** (Берлога.Заброшена CustomAttributes) - // *** End programmer edit section *** (Берлога.ПолеБС CustomAttributes) - [StrLen(255)] - public virtual string ПолеБС + // *** End programmer edit section *** (Берлога.Заброшена CustomAttributes) + public virtual bool Заброшена { get { - // *** Start programmer edit section *** (Берлога.ПолеБС Get start) + // *** Start programmer edit section *** (Берлога.Заброшена Get start) - // *** End programmer edit section *** (Берлога.ПолеБС Get start) - string result = this.fПолеБС; - // *** Start programmer edit section *** (Берлога.ПолеБС Get end) + // *** End programmer edit section *** (Берлога.Заброшена Get start) + bool result = this.fЗаброшена; + // *** Start programmer edit section *** (Берлога.Заброшена Get end) - // *** End programmer edit section *** (Берлога.ПолеБС Get end) + // *** End programmer edit section *** (Берлога.Заброшена Get end) return result; } set { - // *** Start programmer edit section *** (Берлога.ПолеБС Set start) + // *** Start programmer edit section *** (Берлога.Заброшена Set start) - // *** End programmer edit section *** (Берлога.ПолеБС Set start) - this.fПолеБС = value; - // *** Start programmer edit section *** (Берлога.ПолеБС Set end) + // *** End programmer edit section *** (Берлога.Заброшена Set start) + this.fЗаброшена = value; + // *** Start programmer edit section *** (Берлога.Заброшена Set end) - // *** End programmer edit section *** (Берлога.ПолеБС Set end) + // *** End programmer edit section *** (Берлога.Заброшена Set end) } } - + /// - /// Наименование. + /// Комфортность. /// - // *** Start programmer edit section *** (Берлога.Наименование CustomAttributes) + // *** Start programmer edit section *** (Берлога.Комфортность CustomAttributes) - // *** End programmer edit section *** (Берлога.Наименование CustomAttributes) - [StrLen(255)] - public virtual string Наименование + // *** End programmer edit section *** (Берлога.Комфортность CustomAttributes) + public virtual int Комфортность { get { - // *** Start programmer edit section *** (Берлога.Наименование Get start) + // *** Start programmer edit section *** (Берлога.Комфортность Get start) - // *** End programmer edit section *** (Берлога.Наименование Get start) - string result = this.fНаименование; - // *** Start programmer edit section *** (Берлога.Наименование Get end) + // *** End programmer edit section *** (Берлога.Комфортность Get start) + int result = this.fКомфортность; + // *** Start programmer edit section *** (Берлога.Комфортность Get end) - // *** End programmer edit section *** (Берлога.Наименование Get end) + // *** End programmer edit section *** (Берлога.Комфортность Get end) return result; } set { - // *** Start programmer edit section *** (Берлога.Наименование Set start) + // *** Start programmer edit section *** (Берлога.Комфортность Set start) - // *** End programmer edit section *** (Берлога.Наименование Set start) - this.fНаименование = value; - // *** Start programmer edit section *** (Берлога.Наименование Set end) + // *** End programmer edit section *** (Берлога.Комфортность Set start) + this.fКомфортность = value; + // *** Start programmer edit section *** (Берлога.Комфортность Set end) - // *** End programmer edit section *** (Берлога.Наименование Set end) + // *** End programmer edit section *** (Берлога.Комфортность Set end) } } - + /// - /// Комфортность. + /// Наименование. /// - // *** Start programmer edit section *** (Берлога.Комфортность CustomAttributes) + // *** Start programmer edit section *** (Берлога.Наименование CustomAttributes) - // *** End programmer edit section *** (Берлога.Комфортность CustomAttributes) - public virtual int Комфортность + // *** End programmer edit section *** (Берлога.Наименование CustomAttributes) + [StrLen(255)] + public virtual string Наименование { get { - // *** Start programmer edit section *** (Берлога.Комфортность Get start) + // *** Start programmer edit section *** (Берлога.Наименование Get start) - // *** End programmer edit section *** (Берлога.Комфортность Get start) - int result = this.fКомфортность; - // *** Start programmer edit section *** (Берлога.Комфортность Get end) + // *** End programmer edit section *** (Берлога.Наименование Get start) + string result = this.fНаименование; + // *** Start programmer edit section *** (Берлога.Наименование Get end) - // *** End programmer edit section *** (Берлога.Комфортность Get end) + // *** End programmer edit section *** (Берлога.Наименование Get end) return result; } set { - // *** Start programmer edit section *** (Берлога.Комфортность Set start) + // *** Start programmer edit section *** (Берлога.Наименование Set start) - // *** End programmer edit section *** (Берлога.Комфортность Set start) - this.fКомфортность = value; - // *** Start programmer edit section *** (Берлога.Комфортность Set end) + // *** End programmer edit section *** (Берлога.Наименование Set start) + this.fНаименование = value; + // *** Start programmer edit section *** (Берлога.Наименование Set end) - // *** End programmer edit section *** (Берлога.Комфортность Set end) + // *** End programmer edit section *** (Берлога.Наименование Set end) } } - + /// - /// Заброшена. + /// ПолеБС. /// - // *** Start programmer edit section *** (Берлога.Заброшена CustomAttributes) + // *** Start programmer edit section *** (Берлога.ПолеБС CustomAttributes) - // *** End programmer edit section *** (Берлога.Заброшена CustomAttributes) - public virtual bool Заброшена + // *** End programmer edit section *** (Берлога.ПолеБС CustomAttributes) + [StrLen(255)] + public virtual string ПолеБС { get { - // *** Start programmer edit section *** (Берлога.Заброшена Get start) + // *** Start programmer edit section *** (Берлога.ПолеБС Get start) - // *** End programmer edit section *** (Берлога.Заброшена Get start) - bool result = this.fЗаброшена; - // *** Start programmer edit section *** (Берлога.Заброшена Get end) + // *** End programmer edit section *** (Берлога.ПолеБС Get start) + string result = this.fПолеБС; + // *** Start programmer edit section *** (Берлога.ПолеБС Get end) - // *** End programmer edit section *** (Берлога.Заброшена Get end) + // *** End programmer edit section *** (Берлога.ПолеБС Get end) return result; } set { - // *** Start programmer edit section *** (Берлога.Заброшена Set start) + // *** Start programmer edit section *** (Берлога.ПолеБС Set start) - // *** End programmer edit section *** (Берлога.Заброшена Set start) - this.fЗаброшена = value; - // *** Start programmer edit section *** (Берлога.Заброшена Set end) + // *** End programmer edit section *** (Берлога.ПолеБС Set start) + this.fПолеБС = value; + // *** Start programmer edit section *** (Берлога.ПолеБС Set end) - // *** End programmer edit section *** (Берлога.Заброшена Set end) + // *** End programmer edit section *** (Берлога.ПолеБС Set end) } } - + /// /// Сертификат. /// @@ -230,7 +237,7 @@ public virtual ICSSoft.STORMNET.UserDataTypes.WebFile Сертификат // *** End programmer edit section *** (Берлога.Сертификат Set end) } } - + /// /// СертификатСтрока. /// @@ -262,7 +269,7 @@ public virtual string СертификатСтрока // *** End programmer edit section *** (Берлога.СертификатСтрока Set end) } } - + /// /// Берлога. /// @@ -295,7 +302,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Лес ЛесРас // *** End programmer edit section *** (Берлога.ЛесРасположения Set end) } } - + /// /// Берлога. /// @@ -328,7 +335,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Порода Под // *** End programmer edit section *** (Берлога.ПодходитДляПороды Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь. /// @@ -363,13 +370,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь Ме // *** End programmer edit section *** (Берлога.Медведь Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// Представление для работы тестов на загрузку объектов. /// @@ -380,7 +387,7 @@ public static ICSSoft.STORMNET.View LoadTestView return ICSSoft.STORMNET.Information.GetView("LoadTestView", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога)); } } - + /// /// "БерлогаE" view. /// @@ -391,9 +398,20 @@ public static ICSSoft.STORMNET.View БерлогаE return ICSSoft.STORMNET.Information.GetView("БерлогаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога)); } } + + /// + /// Представление для тестов UpdateView (без мастеров и детейлов). + /// + public static ICSSoft.STORMNET.View БерлогаUpdateView + { + get + { + return ICSSoft.STORMNET.Information.GetView("БерлогаUpdateView", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога)); + } + } } } - + /// /// Detail array of Берлога. /// @@ -402,12 +420,12 @@ public static ICSSoft.STORMNET.View БерлогаE // *** End programmer edit section *** (DetailArrayDetailArrayOfБерлога CustomAttributes) public class DetailArrayOfБерлога : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfБерлога members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfБерлога members) - + /// /// Construct detail array. /// @@ -417,11 +435,11 @@ public class DetailArrayOfБерлога : ICSSoft.STORMNET.DetailArray /// /// Adds object with type Берлога. /// - public DetailArrayOfБерлога(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь fМедведь) : + public DetailArrayOfБерлога(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь fМедведь) : base(typeof(Берлога), ((ICSSoft.STORMNET.DataObject)(fМедведь))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога this[int index] { get @@ -429,10 +447,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога this[int inde return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Берлога dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git "a/Tests/Objects/\320\221\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260.cs" "b/Tests/Objects/\320\221\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260.cs" index 00c29118..de9815e8 100644 --- "a/Tests/Objects/\320\221\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260.cs" +++ "b/Tests/Objects/\320\221\320\270\320\261\320\273\320\270\320\276\321\202\320\265\320\272\320\260.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -36,18 +33,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests ""})] public class Библиотека : ICSSoft.STORMNET.DataObject { - + private string fАдрес; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЖурнал fЖурнал; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfКнига fКнига; - + // *** Start programmer edit section *** (Библиотека CustomMembers) // *** End programmer edit section *** (Библиотека CustomMembers) - + /// /// Адрес. /// @@ -79,7 +76,7 @@ public virtual string Адрес // *** End programmer edit section *** (Библиотека.Адрес Set end) } } - + /// /// Библиотека. /// @@ -114,7 +111,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЖур // *** End programmer edit section *** (Библиотека.Журнал Set end) } } - + /// /// Библиотека. /// @@ -149,13 +146,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfКни // *** End programmer edit section *** (Библиотека.Книга Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "Eview" view. /// @@ -169,3 +166,4 @@ public static ICSSoft.STORMNET.View Eview } } } + diff --git "a/Tests/Objects/\320\221\320\273\320\276\321\205\320\260.cs" "b/Tests/Objects/\320\221\320\273\320\276\321\205\320\260.cs" index 20c8b5df..73cd1b53 100644 --- "a/Tests/Objects/\320\221\320\273\320\276\321\205\320\260.cs" +++ "b/Tests/Objects/\320\221\320\273\320\276\321\205\320\260.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -32,16 +29,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Кличка"})] public class Блоха : ICSSoft.STORMNET.DataObject { - + private string fКличка; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь fМедведьОбитания; - + // *** Start programmer edit section *** (Блоха CustomMembers) // *** End programmer edit section *** (Блоха CustomMembers) - + /// /// Кличка. /// @@ -73,7 +70,7 @@ public virtual string Кличка // *** End programmer edit section *** (Блоха.Кличка Set end) } } - + /// /// Блоха. /// @@ -106,13 +103,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь Ме // *** End programmer edit section *** (Блоха.МедведьОбитания Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// Представление для работы тестов на фильтрацию с использованием псевдодетейла. /// @@ -126,3 +123,4 @@ public static ICSSoft.STORMNET.View PseudoDetailView } } } + diff --git "a/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273.cs" "b/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273.cs" index b9577c91..1afcbca8 100644 --- "a/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273.cs" +++ "b/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -32,18 +29,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "prop1"})] public class Детейл : ICSSoft.STORMNET.DataObject { - + private int fprop1; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДетейл2 fДетейл2; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.БазовыйКласс fБазовыйКласс; - + // *** Start programmer edit section *** (Детейл CustomMembers) // *** End programmer edit section *** (Детейл CustomMembers) - + /// /// prop1. /// @@ -74,7 +71,7 @@ public virtual int prop1 // *** End programmer edit section *** (Детейл.prop1 Set end) } } - + /// /// Детейл. /// @@ -109,7 +106,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДет // *** End programmer edit section *** (Детейл.Детейл2 Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.БазовыйКласс. /// @@ -146,13 +143,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.БазовыйКла // *** End programmer edit section *** (Детейл.БазовыйКласс Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "ДетейлE" view. /// @@ -165,7 +162,7 @@ public static ICSSoft.STORMNET.View ДетейлE } } } - + /// /// Detail array of Детейл. /// @@ -174,12 +171,12 @@ public static ICSSoft.STORMNET.View ДетейлE // *** End programmer edit section *** (DetailArrayDetailArrayOfДетейл CustomAttributes) public class DetailArrayOfДетейл : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДетейл members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДетейл members) - + /// /// Construct detail array. /// @@ -193,7 +190,7 @@ public DetailArrayOfДетейл(NewPlatform.Flexberry.ORM.ODataService.Tests.Б base(typeof(Детейл), ((ICSSoft.STORMNET.DataObject)(fБазовыйКласс))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл this[int index] { get @@ -201,10 +198,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл this[int index] return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git "a/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\2732.cs" "b/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\2732.cs" index c2c448f1..d0bf199f 100644 --- "a/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\2732.cs" +++ "b/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\2732.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,16 +27,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class Детейл2 : ICSSoft.STORMNET.DataObject { - + private string fprop2; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл fДетейл; - + // *** Start programmer edit section *** (Детейл2 CustomMembers) // *** End programmer edit section *** (Детейл2 CustomMembers) - + /// /// prop2. /// @@ -71,7 +68,7 @@ public virtual string prop2 // *** End programmer edit section *** (Детейл2.prop2 Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл. /// @@ -109,7 +106,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл Дет } } } - + /// /// Detail array of Детейл2. /// @@ -118,12 +115,12 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл Дет // *** End programmer edit section *** (DetailArrayDetailArrayOfДетейл2 CustomAttributes) public class DetailArrayOfДетейл2 : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДетейл2 members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfДетейл2 members) - + /// /// Construct detail array. /// @@ -137,7 +134,7 @@ public DetailArrayOfДетейл2(NewPlatform.Flexberry.ORM.ODataService.Tests. base(typeof(Детейл2), ((ICSSoft.STORMNET.DataObject)(fДетейл))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл2 this[int index] { get @@ -145,10 +142,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл2 this[int index return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл2)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл2 dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git "a/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" "b/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" index e0a77167..ca6cef9c 100644 --- "a/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" +++ "b/Tests/Objects/\320\224\320\265\321\202\320\265\320\271\320\273\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -33,14 +30,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "БазовыйКласс"})] public class ДетейлНаследник : NewPlatform.Flexberry.ORM.ODataService.Tests.Детейл { - + private string fprop3; - + // *** Start programmer edit section *** (ДетейлНаследник CustomMembers) // *** End programmer edit section *** (ДетейлНаследник CustomMembers) - + /// /// prop3. /// @@ -72,13 +69,13 @@ public virtual string prop3 // *** End programmer edit section *** (ДетейлНаследник.prop3 Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "ДетейлНаследникE" view. /// @@ -92,3 +89,4 @@ public static ICSSoft.STORMNET.View ДетейлНаследникE } } } + diff --git "a/Tests/Objects/\320\224\320\276\321\207\320\265\321\200\320\275\320\270\320\271\320\232\320\273\320\260\321\201\321\201.cs" "b/Tests/Objects/\320\224\320\276\321\207\320\265\321\200\320\275\320\270\320\271\320\232\320\273\320\260\321\201\321\201.cs" index 9b3a1814..20ec6a21 100644 --- "a/Tests/Objects/\320\224\320\276\321\207\320\265\321\200\320\275\320\270\320\271\320\232\320\273\320\260\321\201\321\201.cs" +++ "b/Tests/Objects/\320\224\320\276\321\207\320\265\321\200\320\275\320\270\320\271\320\232\320\273\320\260\321\201\321\201.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -56,14 +53,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "PropertyStormnetFile"})] public class ДочернийКласс : NewPlatform.Flexberry.ORM.ODataService.Tests.КлассСМножествомТипов { - + private string fChildProperty; - + // *** Start programmer edit section *** (ДочернийКласс CustomMembers) // *** End programmer edit section *** (ДочернийКласс CustomMembers) - + /// /// ChildProperty. /// @@ -95,13 +92,13 @@ public virtual string ChildProperty // *** End programmer edit section *** (ДочернийКласс.ChildProperty Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "ДочернийКлассE" view. /// @@ -115,3 +112,4 @@ public static ICSSoft.STORMNET.View ДочернийКлассE } } } + diff --git "a/Tests/Objects/\320\226\321\203\321\200\320\275\320\260\320\273.cs" "b/Tests/Objects/\320\226\321\203\321\200\320\275\320\260\320\273.cs" index 7a37b5bc..6f753eef 100644 --- "a/Tests/Objects/\320\226\321\203\321\200\320\275\320\260\320\273.cs" +++ "b/Tests/Objects/\320\226\321\203\321\200\320\275\320\260\320\273.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -35,20 +32,20 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [MasterViewDefineAttribute("Dжурнал", "Автор2", ICSSoft.STORMNET.LookupTypeEnum.Standard, "", "Имя")] public class Журнал : ICSSoft.STORMNET.DataObject { - + private string fНазвание; - + private int fНомер; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Автор fАвтор2; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека fБиблиотека2; - + // *** Start programmer edit section *** (Журнал CustomMembers) // *** End programmer edit section *** (Журнал CustomMembers) - + /// /// Название. /// @@ -80,7 +77,7 @@ public virtual string Название // *** End programmer edit section *** (Журнал.Название Set end) } } - + /// /// Номер. /// @@ -111,7 +108,7 @@ public virtual int Номер // *** End programmer edit section *** (Журнал.Номер Set end) } } - + /// /// Журнал. /// @@ -145,7 +142,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Автор Авто // *** End programmer edit section *** (Журнал.Автор2 Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека. /// @@ -180,13 +177,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека // *** End programmer edit section *** (Журнал.Библиотека2 Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "Dжурнал" view. /// @@ -199,7 +196,7 @@ public static ICSSoft.STORMNET.View Dжурнал } } } - + /// /// Detail array of Журнал. /// @@ -208,12 +205,12 @@ public static ICSSoft.STORMNET.View Dжурнал // *** End programmer edit section *** (DetailArrayDetailArrayOfЖурнал CustomAttributes) public class DetailArrayOfЖурнал : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЖурнал members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЖурнал members) - + /// /// Construct detail array. /// @@ -227,7 +224,7 @@ public DetailArrayOfЖурнал(NewPlatform.Flexberry.ORM.ODataService.Tests.Б base(typeof(Журнал), ((ICSSoft.STORMNET.DataObject)(fБиблиотека))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.Журнал this[int index] { get @@ -235,10 +232,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.Журнал this[int index] return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Журнал)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Журнал dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201NotStored.cs" "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201NotStored.cs" index 2a12d8c2..270d2d4c 100644 --- "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201NotStored.cs" +++ "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201NotStored.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -33,14 +30,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "StrAttr"})] public class КлассNotStored : ICSSoft.STORMNET.DataObject { - + private string fStrAttr; - + // *** Start programmer edit section *** (КлассNotStored CustomMembers) // *** End programmer edit section *** (КлассNotStored CustomMembers) - + /// /// StrAttr. /// @@ -72,13 +69,13 @@ public virtual string StrAttr // *** End programmer edit section *** (КлассNotStored.StrAttr Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "КлассNotStoredE" view. /// @@ -92,3 +89,4 @@ public static ICSSoft.STORMNET.View КлассNotStoredE } } } + diff --git "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201StoredDerived.cs" "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201StoredDerived.cs" index 365c87be..a05be2c4 100644 --- "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201StoredDerived.cs" +++ "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201StoredDerived.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -34,14 +31,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "StrAttr"})] public class КлассStoredDerived : NewPlatform.Flexberry.ORM.ODataService.Tests.КлассNotStored { - + private string fStrAttr2; - + // *** Start programmer edit section *** (КлассStoredDerived CustomMembers) // *** End programmer edit section *** (КлассStoredDerived CustomMembers) - + /// /// StrAttr2. /// @@ -73,13 +70,13 @@ public virtual string StrAttr2 // *** End programmer edit section *** (КлассStoredDerived.StrAttr2 Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "КлассStoredDerivedE" view. /// @@ -93,3 +90,4 @@ public static ICSSoft.STORMNET.View КлассStoredDerivedE } } } + diff --git "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\234\320\275\320\276\320\266\320\265\321\201\321\202\320\262\320\276\320\274\320\242\320\270\320\277\320\276\320\262.cs" "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\234\320\275\320\276\320\266\320\265\321\201\321\202\320\262\320\276\320\274\320\242\320\270\320\277\320\276\320\262.cs" index 8602e492..ac94a2bf 100644 --- "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\234\320\275\320\276\320\266\320\265\321\201\321\202\320\262\320\276\320\274\320\242\320\270\320\277\320\276\320\262.cs" +++ "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\234\320\275\320\276\320\266\320\265\321\201\321\202\320\262\320\276\320\274\320\242\320\270\320\277\320\276\320\262.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -57,124 +54,85 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "PropertyGeography"})] public class КлассСМножествомТипов : ICSSoft.STORMNET.DataObject { - - private Microsoft.Spatial.Geography fPropertyGeography; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Цифра fPropertyEnum; - + private bool fPropertyBool; - - private int fPropertyInt; - + private System.DateTime fPropertyDateTime; - - private string fPropertyString; - - private float fPropertyFloat; - - private double fPropertyDouble; - + private decimal fPropertyDecimal; - - private System.Nullable fPropertySystemNullableDateTime; - - private System.Nullable fPropertySystemNullableInt; - - private System.Nullable fPropertySystemNullableGuid; - - private System.Nullable fPropertySystemNullableDecimal; - - private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fPropertyStormnetNullableDateTime; - - private ICSSoft.STORMNET.UserDataTypes.NullableInt fPropertyStormnetNullableInt; - - private ICSSoft.STORMNET.KeyGen.KeyGuid fPropertyStormnetKeyGuid; - - private ICSSoft.STORMNET.UserDataTypes.NullableDecimal fPropertyStormnetNullableDecimal; - - private ICSSoft.STORMNET.UserDataTypes.PartliedDate fPropertyStormnetPartliedDate; - - private ICSSoft.STORMNET.UserDataTypes.Contact fPropertyStormnetContact; - + + private double fPropertyDouble; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Цифра fPropertyEnum; + + private float fPropertyFloat; + + private Microsoft.Spatial.Geography fPropertyGeography; + + private int fPropertyInt; + private ICSSoft.STORMNET.UserDataTypes.Blob fPropertyStormnetBlob; - + + private ICSSoft.STORMNET.UserDataTypes.Contact fPropertyStormnetContact; + private ICSSoft.STORMNET.UserDataTypes.Event fPropertyStormnetEvent; - + + private ICSSoft.STORMNET.FileType.File fPropertyStormnetFile; + private ICSSoft.STORMNET.UserDataTypes.GeoData fPropertyStormnetGeoData; - + private ICSSoft.STORMNET.UserDataTypes.Image fPropertyStormnetImage; - + + private ICSSoft.STORMNET.KeyGen.KeyGuid fPropertyStormnetKeyGuid; + + private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fPropertyStormnetNullableDateTime; + + private ICSSoft.STORMNET.UserDataTypes.NullableDecimal fPropertyStormnetNullableDecimal; + + private ICSSoft.STORMNET.UserDataTypes.NullableInt fPropertyStormnetNullableInt; + + private ICSSoft.STORMNET.UserDataTypes.PartliedDate fPropertyStormnetPartliedDate; + private ICSSoft.STORMNET.UserDataTypes.WebFile fPropertyStormnetWebFile; - - private ICSSoft.STORMNET.FileType.File fPropertyStormnetFile; - - // *** Start programmer edit section *** (КлассСМножествомТипов CustomMembers) - // *** End programmer edit section *** (КлассСМножествомТипов CustomMembers) + private string fPropertyString; - - /// - /// PropertyGeography. - /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography CustomAttributes) + private System.Nullable fPropertySystemNullableDateTime; - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography CustomAttributes) - public virtual Microsoft.Spatial.Geography PropertyGeography - { - get - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get start) + private System.Nullable fPropertySystemNullableDecimal; - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get start) - Microsoft.Spatial.Geography result = this.fPropertyGeography; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get end) + private System.Nullable fPropertySystemNullableGuid; - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get end) - return result; - } - set - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set start) + private System.Nullable fPropertySystemNullableInt; + + // *** Start programmer edit section *** (КлассСМножествомТипов CustomMembers) + + // *** End programmer edit section *** (КлассСМножествомТипов CustomMembers) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set start) - this.fPropertyGeography = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set end) - } - } - /// - /// PropertyEnum. + /// NotStoredProperty. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum CustomAttributes) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Цифра PropertyEnum + // *** Start programmer edit section *** (КлассСМножествомТипов.NotStoredProperty CustomAttributes) + [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.SQLDataService), "@PropertyInt")] + // *** End programmer edit section *** (КлассСМножествомТипов.NotStoredProperty CustomAttributes) + [ICSSoft.STORMNET.NotStored()] + public virtual int NotStoredProperty { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Цифра result = this.fPropertyEnum; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get end) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get end) - return result; + // *** Start programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Get) + return PropertyInt; + // *** End programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Get) } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set start) - this.fPropertyEnum = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set end) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set end) + // *** Start programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Set) + PropertyInt = value; + // *** End programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Set) } } - + /// /// PropertyBool. /// @@ -205,38 +163,7 @@ public virtual bool PropertyBool // *** End programmer edit section *** (КлассСМножествомТипов.PropertyBool Set end) } } - - /// - /// PropertyInt. - /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt CustomAttributes) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt CustomAttributes) - public virtual int PropertyInt - { - get - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Get start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Get start) - int result = this.fPropertyInt; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Get end) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Get end) - return result; - } - set - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Set start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Set start) - this.fPropertyInt = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Set end) - } - } - /// /// PropertyDateTime. /// @@ -267,70 +194,38 @@ public virtual System.DateTime PropertyDateTime // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDateTime Set end) } } - - /// - /// PropertyString. - /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString CustomAttributes) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString CustomAttributes) - [StrLen(255)] - public virtual string PropertyString - { - get - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Get start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Get start) - string result = this.fPropertyString; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Get end) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Get end) - return result; - } - set - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Set start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Set start) - this.fPropertyString = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Set end) - } - } - /// - /// PropertyFloat. + /// PropertyDecimal. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat CustomAttributes) - public virtual float PropertyFloat + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal CustomAttributes) + public virtual decimal PropertyDecimal { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get start) - float result = this.fPropertyFloat; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get start) + decimal result = this.fPropertyDecimal; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set start) - this.fPropertyFloat = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set start) + this.fPropertyDecimal = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set end) } } - + /// /// PropertyDouble. /// @@ -361,225 +256,317 @@ public virtual double PropertyDouble // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDouble Set end) } } - + /// - /// PropertyDecimal. + /// PropertyEnum. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal CustomAttributes) - public virtual decimal PropertyDecimal + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Цифра PropertyEnum { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get start) - decimal result = this.fPropertyDecimal; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Цифра result = this.fPropertyEnum; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set start) - this.fPropertyDecimal = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set start) + this.fPropertyEnum = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyDecimal Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyEnum Set end) } } - + /// - /// PropertySystemNullableDateTime. + /// PropertyFloat. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime CustomAttributes) - public virtual System.Nullable PropertySystemNullableDateTime + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat CustomAttributes) + public virtual float PropertyFloat { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get start) - System.Nullable result = this.fPropertySystemNullableDateTime; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get start) + float result = this.fPropertyFloat; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set start) - this.fPropertySystemNullableDateTime = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set start) + this.fPropertyFloat = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyFloat Set end) } } - + /// - /// PropertySystemNullableInt. + /// PropertyGeography. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt CustomAttributes) - public virtual System.Nullable PropertySystemNullableInt + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography CustomAttributes) + public virtual Microsoft.Spatial.Geography PropertyGeography { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get start) - System.Nullable result = this.fPropertySystemNullableInt; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get start) + Microsoft.Spatial.Geography result = this.fPropertyGeography; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set start) - this.fPropertySystemNullableInt = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set start) + this.fPropertyGeography = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyGeography Set end) } } - + /// - /// PropertySystemNullableGuid. + /// PropertyInt. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid CustomAttributes) - public virtual System.Nullable PropertySystemNullableGuid + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt CustomAttributes) + public virtual int PropertyInt { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get start) - System.Nullable result = this.fPropertySystemNullableGuid; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Get start) + int result = this.fPropertyInt; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set start) - this.fPropertySystemNullableGuid = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Set start) + this.fPropertyInt = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyInt Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyInt Set end) } } - + /// - /// PropertySystemNullableDecimal. + /// PropertyStormnetBlob. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal CustomAttributes) - public virtual System.Nullable PropertySystemNullableDecimal + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.Blob PropertyStormnetBlob { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get start) - System.Nullable result = this.fPropertySystemNullableDecimal; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get start) + ICSSoft.STORMNET.UserDataTypes.Blob result = this.fPropertyStormnetBlob; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set start) - this.fPropertySystemNullableDecimal = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set start) + this.fPropertyStormnetBlob = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set end) } } - + /// - /// PropertyStormnetNullableDateTime. + /// PropertyStormnetContact. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime CustomAttributes) - [PropertyStorage("PropStormnetNullableDateTime")] - public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime PropertyStormnetNullableDateTime + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.Contact PropertyStormnetContact { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get start) - ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fPropertyStormnetNullableDateTime; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get start) + ICSSoft.STORMNET.UserDataTypes.Contact result = this.fPropertyStormnetContact; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set start) - this.fPropertyStormnetNullableDateTime = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set start) + this.fPropertyStormnetContact = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set end) } } - + /// - /// PropertyStormnetNullableInt. + /// PropertyStormnetEvent. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.NullableInt PropertyStormnetNullableInt + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.Event PropertyStormnetEvent { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get start) - ICSSoft.STORMNET.UserDataTypes.NullableInt result = this.fPropertyStormnetNullableInt; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get start) + ICSSoft.STORMNET.UserDataTypes.Event result = this.fPropertyStormnetEvent; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set start) - this.fPropertyStormnetNullableInt = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set start) + this.fPropertyStormnetEvent = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set end) } } - + + /// + /// PropertyStormnetFile. + /// + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile CustomAttributes) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile CustomAttributes) + public virtual ICSSoft.STORMNET.FileType.File PropertyStormnetFile + { + get + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get start) + ICSSoft.STORMNET.FileType.File result = this.fPropertyStormnetFile; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get end) + return result; + } + set + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set start) + this.fPropertyStormnetFile = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set end) + } + } + + /// + /// PropertyStormnetGeoData. + /// + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData CustomAttributes) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.GeoData PropertyStormnetGeoData + { + get + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get start) + ICSSoft.STORMNET.UserDataTypes.GeoData result = this.fPropertyStormnetGeoData; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get end) + return result; + } + set + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set start) + this.fPropertyStormnetGeoData = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set end) + } + } + + /// + /// PropertyStormnetImage. + /// + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage CustomAttributes) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.Image PropertyStormnetImage + { + get + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get start) + ICSSoft.STORMNET.UserDataTypes.Image result = this.fPropertyStormnetImage; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get end) + return result; + } + set + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set start) + this.fPropertyStormnetImage = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set end) + } + } + /// /// PropertyStormnetKeyGuid. /// @@ -610,39 +597,102 @@ public virtual ICSSoft.STORMNET.KeyGen.KeyGuid PropertyStormnetKeyGuid // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetKeyGuid Set end) } } - + + /// + /// PropertyStormnetNullableDateTime. + /// + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime CustomAttributes) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime CustomAttributes) + [PropertyStorage("PropStormnetNullableDateTime")] + public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime PropertyStormnetNullableDateTime + { + get + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get start) + ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fPropertyStormnetNullableDateTime; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Get end) + return result; + } + set + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set start) + this.fPropertyStormnetNullableDateTime = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDateTime Set end) + } + } + /// /// PropertyStormnetNullableDecimal. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal CustomAttributes) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal CustomAttributes) + [PropertyStorage("PropStormnetNullableDecimal")] + public virtual ICSSoft.STORMNET.UserDataTypes.NullableDecimal PropertyStormnetNullableDecimal + { + get + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get start) + ICSSoft.STORMNET.UserDataTypes.NullableDecimal result = this.fPropertyStormnetNullableDecimal; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get end) + return result; + } + set + { + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set start) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set start) + this.fPropertyStormnetNullableDecimal = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set end) + + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set end) + } + } + + /// + /// PropertyStormnetNullableInt. + /// + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal CustomAttributes) - [PropertyStorage("PropStormnetNullableDecimal")] - public virtual ICSSoft.STORMNET.UserDataTypes.NullableDecimal PropertyStormnetNullableDecimal + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.NullableInt PropertyStormnetNullableInt { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get start) - ICSSoft.STORMNET.UserDataTypes.NullableDecimal result = this.fPropertyStormnetNullableDecimal; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get start) + ICSSoft.STORMNET.UserDataTypes.NullableInt result = this.fPropertyStormnetNullableInt; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set start) - this.fPropertyStormnetNullableDecimal = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set start) + this.fPropertyStormnetNullableInt = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableDecimal Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetNullableInt Set end) } } - + /// /// PropertyStormnetPartliedDate. /// @@ -673,253 +723,200 @@ public virtual ICSSoft.STORMNET.UserDataTypes.PartliedDate PropertyStormnetPartl // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetPartliedDate Set end) } } - - /// - /// PropertyStormnetContact. - /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.Contact PropertyStormnetContact - { - get - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get start) - ICSSoft.STORMNET.UserDataTypes.Contact result = this.fPropertyStormnetContact; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get end) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Get end) - return result; - } - set - { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set start) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set start) - this.fPropertyStormnetContact = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set end) - - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetContact Set end) - } - } - /// - /// PropertyStormnetBlob. + /// PropertyStormnetWebFile. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.Blob PropertyStormnetBlob + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.WebFile PropertyStormnetWebFile { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get start) - ICSSoft.STORMNET.UserDataTypes.Blob result = this.fPropertyStormnetBlob; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get start) + ICSSoft.STORMNET.UserDataTypes.WebFile result = this.fPropertyStormnetWebFile; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set start) - this.fPropertyStormnetBlob = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set start) + this.fPropertyStormnetWebFile = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetBlob Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set end) } } - + /// - /// PropertyStormnetEvent. + /// PropertyString. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.Event PropertyStormnetEvent + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString CustomAttributes) + [StrLen(255)] + public virtual string PropertyString { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get start) - ICSSoft.STORMNET.UserDataTypes.Event result = this.fPropertyStormnetEvent; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Get start) + string result = this.fPropertyString; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set start) - this.fPropertyStormnetEvent = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Set start) + this.fPropertyString = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyString Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetEvent Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertyString Set end) } } - + /// - /// PropertyStormnetGeoData. + /// PropertySystemNullableDateTime. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.GeoData PropertyStormnetGeoData + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime CustomAttributes) + public virtual System.Nullable PropertySystemNullableDateTime { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get start) - ICSSoft.STORMNET.UserDataTypes.GeoData result = this.fPropertyStormnetGeoData; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get start) + System.Nullable result = this.fPropertySystemNullableDateTime; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set start) - this.fPropertyStormnetGeoData = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set start) + this.fPropertySystemNullableDateTime = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetGeoData Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDateTime Set end) } } - + /// - /// PropertyStormnetImage. + /// PropertySystemNullableDecimal. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.Image PropertyStormnetImage + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal CustomAttributes) + public virtual System.Nullable PropertySystemNullableDecimal { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get start) - ICSSoft.STORMNET.UserDataTypes.Image result = this.fPropertyStormnetImage; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get start) + System.Nullable result = this.fPropertySystemNullableDecimal; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set start) - this.fPropertyStormnetImage = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set start) + this.fPropertySystemNullableDecimal = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetImage Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableDecimal Set end) } } - + /// - /// PropertyStormnetWebFile. + /// PropertySystemNullableGuid. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.WebFile PropertyStormnetWebFile + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid CustomAttributes) + public virtual System.Nullable PropertySystemNullableGuid { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get start) - ICSSoft.STORMNET.UserDataTypes.WebFile result = this.fPropertyStormnetWebFile; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get start) + System.Nullable result = this.fPropertySystemNullableGuid; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set start) - this.fPropertyStormnetWebFile = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set start) + this.fPropertySystemNullableGuid = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetWebFile Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableGuid Set end) } } - + /// - /// PropertyStormnetFile. + /// PropertySystemNullableInt. /// - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile CustomAttributes) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt CustomAttributes) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile CustomAttributes) - public virtual ICSSoft.STORMNET.FileType.File PropertyStormnetFile + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt CustomAttributes) + public virtual System.Nullable PropertySystemNullableInt { get { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get start) - ICSSoft.STORMNET.FileType.File result = this.fPropertyStormnetFile; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get start) + System.Nullable result = this.fPropertySystemNullableInt; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Get end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Get end) return result; } set { - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set start) + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set start) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set start) - this.fPropertyStormnetFile = value; - // *** Start programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set end) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set start) + this.fPropertySystemNullableInt = value; + // *** Start programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set end) - // *** End programmer edit section *** (КлассСМножествомТипов.PropertyStormnetFile Set end) - } - } - - /// - /// NotStoredProperty. - /// - // *** Start programmer edit section *** (КлассСМножествомТипов.NotStoredProperty CustomAttributes) - [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.SQLDataService), "@PropertyInt")] - // *** End programmer edit section *** (КлассСМножествомТипов.NotStoredProperty CustomAttributes) - [ICSSoft.STORMNET.NotStored()] - public virtual int NotStoredProperty - { - get - { - // *** Start programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Get) - return PropertyInt; - // *** End programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Get) - } - set - { - // *** Start programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Set) - PropertyInt = value; - // *** End programmer edit section *** (КлассСМножествомТипов.NotStoredProperty Set) + // *** End programmer edit section *** (КлассСМножествомТипов.PropertySystemNullableInt Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "КлассСМножествомТиповE" view. /// @@ -933,3 +930,4 @@ public static ICSSoft.STORMNET.View КлассСМножествомТиповE } } } + diff --git "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\274\320\232\320\273\321\216\321\207\320\276\320\274.cs" "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\274\320\232\320\273\321\216\321\207\320\276\320\274.cs" index 91ae343c..96773f5b 100644 --- "a/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\274\320\232\320\273\321\216\321\207\320\276\320\274.cs" +++ "b/Tests/Objects/\320\232\320\273\320\260\321\201\321\201\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\274\320\232\320\273\321\216\321\207\320\276\320\274.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -32,9 +29,9 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class КлассСоСтроковымКлючом : ICSSoft.STORMNET.DataObject { - + private string fStoragePrimaryKey; - + // *** Start programmer edit section *** (КлассСоСтроковымКлючом CustomMembers) /// /// Gets or sets __PrimaryKey. @@ -56,7 +53,7 @@ public override object __PrimaryKey } // *** End programmer edit section *** (КлассСоСтроковымКлючом CustomMembers) - + /// /// StoragePrimaryKey. /// @@ -91,3 +88,4 @@ public virtual string StoragePrimaryKey } } } + diff --git "a/Tests/Objects/\320\232\320\275\320\270\320\263\320\260.cs" "b/Tests/Objects/\320\232\320\275\320\270\320\263\320\260.cs" index 43fb15d5..f1ca133b 100644 --- "a/Tests/Objects/\320\232\320\275\320\270\320\263\320\260.cs" +++ "b/Tests/Objects/\320\232\320\275\320\270\320\263\320\260.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -34,18 +31,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [MasterViewDefineAttribute("Dкнига", "Автор1", ICSSoft.STORMNET.LookupTypeEnum.Standard, "", "Имя")] public class Книга : ICSSoft.STORMNET.DataObject { - + private string fНазвание; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Автор fАвтор1; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека fБиблиотека1; - + // *** Start programmer edit section *** (Книга CustomMembers) // *** End programmer edit section *** (Книга CustomMembers) - + /// /// Название. /// @@ -77,7 +74,7 @@ public virtual string Название // *** End programmer edit section *** (Книга.Название Set end) } } - + /// /// Книга. /// @@ -111,7 +108,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Автор Авто // *** End programmer edit section *** (Книга.Автор1 Set end) } } - + /// /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека. /// @@ -146,13 +143,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека // *** End programmer edit section *** (Книга.Библиотека1 Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "Dкнига" view. /// @@ -165,7 +162,7 @@ public static ICSSoft.STORMNET.View Dкнига } } } - + /// /// Detail array of Книга. /// @@ -174,12 +171,12 @@ public static ICSSoft.STORMNET.View Dкнига // *** End programmer edit section *** (DetailArrayDetailArrayOfКнига CustomAttributes) public class DetailArrayOfКнига : ICSSoft.STORMNET.DetailArray { - + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfКнига members) // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfКнига members) - + /// /// Construct detail array. /// @@ -193,7 +190,7 @@ public DetailArrayOfКнига(NewPlatform.Flexberry.ORM.ODataService.Tests.Би base(typeof(Книга), ((ICSSoft.STORMNET.DataObject)(fБиблиотека))) { } - + public NewPlatform.Flexberry.ORM.ODataService.Tests.Книга this[int index] { get @@ -201,10 +198,11 @@ public NewPlatform.Flexberry.ORM.ODataService.Tests.Книга this[int index] return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Книга)(this.ItemByIndex(index))); } } - + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Книга dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); } } } + diff --git "a/Tests/Objects/\320\232\320\276\321\202\320\265\320\275\320\276\320\272.cs" "b/Tests/Objects/\320\232\320\276\321\202\320\265\320\275\320\276\320\272.cs" index 15442547..517b5e80 100644 --- "a/Tests/Objects/\320\232\320\276\321\202\320\265\320\275\320\276\320\272.cs" +++ "b/Tests/Objects/\320\232\320\276\321\202\320\265\320\275\320\276\320\272.cs" @@ -1,140 +1,138 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Котенок. - /// - // *** Start programmer edit section *** (Котенок CustomAttributes) - - // *** End programmer edit section *** (Котенок CustomAttributes) - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class Котенок : ICSSoft.STORMNET.DataObject - { - - private string fКличкаКотенка; - - private int fГлупость; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка fКошка; - - // *** Start programmer edit section *** (Котенок CustomMembers) - - // *** End programmer edit section *** (Котенок CustomMembers) - - - /// - /// КличкаКотенка. - /// - // *** Start programmer edit section *** (Котенок.КличкаКотенка CustomAttributes) - - // *** End programmer edit section *** (Котенок.КличкаКотенка CustomAttributes) - [StrLen(255)] - public virtual string КличкаКотенка - { - get - { - // *** Start programmer edit section *** (Котенок.КличкаКотенка Get start) - - // *** End programmer edit section *** (Котенок.КличкаКотенка Get start) - string result = this.fКличкаКотенка; - // *** Start programmer edit section *** (Котенок.КличкаКотенка Get end) - - // *** End programmer edit section *** (Котенок.КличкаКотенка Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Котенок.КличкаКотенка Set start) - - // *** End programmer edit section *** (Котенок.КличкаКотенка Set start) - this.fКличкаКотенка = value; - // *** Start programmer edit section *** (Котенок.КличкаКотенка Set end) - - // *** End programmer edit section *** (Котенок.КличкаКотенка Set end) - } - } - - /// - /// Глупость. - /// - // *** Start programmer edit section *** (Котенок.Глупость CustomAttributes) - - // *** End programmer edit section *** (Котенок.Глупость CustomAttributes) - public virtual int Глупость - { - get - { - // *** Start programmer edit section *** (Котенок.Глупость Get start) - - // *** End programmer edit section *** (Котенок.Глупость Get start) - int result = this.fГлупость; - // *** Start programmer edit section *** (Котенок.Глупость Get end) - - // *** End programmer edit section *** (Котенок.Глупость Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Котенок.Глупость Set start) - - // *** End programmer edit section *** (Котенок.Глупость Set start) - this.fГлупость = value; - // *** Start programmer edit section *** (Котенок.Глупость Set end) - - // *** End programmer edit section *** (Котенок.Глупость Set end) - } - } - - /// - /// Котенок. - /// - // *** Start programmer edit section *** (Котенок.Кошка CustomAttributes) - - // *** End programmer edit section *** (Котенок.Кошка CustomAttributes) - [NotNull()] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка Кошка - { - get - { - // *** Start programmer edit section *** (Котенок.Кошка Get start) - - // *** End programmer edit section *** (Котенок.Кошка Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка result = this.fКошка; - // *** Start programmer edit section *** (Котенок.Кошка Get end) - - // *** End programmer edit section *** (Котенок.Кошка Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Котенок.Кошка Set start) - - // *** End programmer edit section *** (Котенок.Кошка Set start) - this.fКошка = value; - // *** Start programmer edit section *** (Котенок.Кошка Set end) - - // *** End programmer edit section *** (Котенок.Кошка Set end) - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Котенок. + /// + // *** Start programmer edit section *** (Котенок CustomAttributes) + + // *** End programmer edit section *** (Котенок CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class Котенок : ICSSoft.STORMNET.DataObject + { + + private int fГлупость; + + private string fКличкаКотенка; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка fКошка; + + // *** Start programmer edit section *** (Котенок CustomMembers) + + // *** End programmer edit section *** (Котенок CustomMembers) + + + /// + /// Глупость. + /// + // *** Start programmer edit section *** (Котенок.Глупость CustomAttributes) + + // *** End programmer edit section *** (Котенок.Глупость CustomAttributes) + public virtual int Глупость + { + get + { + // *** Start programmer edit section *** (Котенок.Глупость Get start) + + // *** End programmer edit section *** (Котенок.Глупость Get start) + int result = this.fГлупость; + // *** Start programmer edit section *** (Котенок.Глупость Get end) + + // *** End programmer edit section *** (Котенок.Глупость Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Котенок.Глупость Set start) + + // *** End programmer edit section *** (Котенок.Глупость Set start) + this.fГлупость = value; + // *** Start programmer edit section *** (Котенок.Глупость Set end) + + // *** End programmer edit section *** (Котенок.Глупость Set end) + } + } + + /// + /// КличкаКотенка. + /// + // *** Start programmer edit section *** (Котенок.КличкаКотенка CustomAttributes) + + // *** End programmer edit section *** (Котенок.КличкаКотенка CustomAttributes) + [StrLen(255)] + public virtual string КличкаКотенка + { + get + { + // *** Start programmer edit section *** (Котенок.КличкаКотенка Get start) + + // *** End programmer edit section *** (Котенок.КличкаКотенка Get start) + string result = this.fКличкаКотенка; + // *** Start programmer edit section *** (Котенок.КличкаКотенка Get end) + + // *** End programmer edit section *** (Котенок.КличкаКотенка Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Котенок.КличкаКотенка Set start) + + // *** End programmer edit section *** (Котенок.КличкаКотенка Set start) + this.fКличкаКотенка = value; + // *** Start programmer edit section *** (Котенок.КличкаКотенка Set end) + + // *** End programmer edit section *** (Котенок.КличкаКотенка Set end) + } + } + + /// + /// Котенок. + /// + // *** Start programmer edit section *** (Котенок.Кошка CustomAttributes) + + // *** End programmer edit section *** (Котенок.Кошка CustomAttributes) + [NotNull()] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка Кошка + { + get + { + // *** Start programmer edit section *** (Котенок.Кошка Get start) + + // *** End programmer edit section *** (Котенок.Кошка Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка result = this.fКошка; + // *** Start programmer edit section *** (Котенок.Кошка Get end) + + // *** End programmer edit section *** (Котенок.Кошка Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Котенок.Кошка Set start) + + // *** End programmer edit section *** (Котенок.Кошка Set start) + this.fКошка = value; + // *** Start programmer edit section *** (Котенок.Кошка Set end) + + // *** End programmer edit section *** (Котенок.Кошка Set end) + } + } + } +} + diff --git "a/Tests/Objects/\320\232\320\276\321\210\320\272\320\260.cs" "b/Tests/Objects/\320\232\320\276\321\210\320\272\320\260.cs" index 7f7bbcb6..645787b0 100644 --- "a/Tests/Objects/\320\232\320\276\321\210\320\272\320\260.cs" +++ "b/Tests/Objects/\320\232\320\276\321\210\320\272\320\260.cs" @@ -1,401 +1,399 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET.Business; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Кошка. - /// - // *** Start programmer edit section *** (Кошка CustomAttributes) - - // *** End programmer edit section *** (Кошка CustomAttributes) - [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.CatsBS, NewPlatform.Flexberry.ORM.OD" + - "ataService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - [View("КошкаE", new string[] { - "Кличка", - "ДатаРождения", - "Тип", - "ПородаСтрокой", - "Агрессивная", - "КоличествоУсовСлева", - "КоличествоУсовСправа", - "КошкаСтрокой", - "Порода.Название", - "Порода.ТипПороды.Название"})] - public class Кошка : ICSSoft.STORMNET.DataObject - { - - private string fКличка; - - private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаРождения; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипКошки fТип; - - private string fПородаСтрокой; - - private bool fАгрессивная; - - private ICSSoft.STORMNET.UserDataTypes.NullableInt fКоличествоУсовСлева; - - private ICSSoft.STORMNET.UserDataTypes.NullableInt fКоличествоУсовСправа; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Порода fПорода; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа fЛапа; - - // *** Start programmer edit section *** (Кошка CustomMembers) - - // *** End programmer edit section *** (Кошка CustomMembers) - - - /// - /// Кличка. - /// - // *** Start programmer edit section *** (Кошка.Кличка CustomAttributes) - - // *** End programmer edit section *** (Кошка.Кличка CustomAttributes) - [StrLen(255)] - public virtual string Кличка - { - get - { - // *** Start programmer edit section *** (Кошка.Кличка Get start) - - // *** End programmer edit section *** (Кошка.Кличка Get start) - string result = this.fКличка; - // *** Start programmer edit section *** (Кошка.Кличка Get end) - - // *** End programmer edit section *** (Кошка.Кличка Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.Кличка Set start) - - // *** End programmer edit section *** (Кошка.Кличка Set start) - this.fКличка = value; - // *** Start programmer edit section *** (Кошка.Кличка Set end) - - // *** End programmer edit section *** (Кошка.Кличка Set end) - } - } - - /// - /// ДатаРождения. - /// - // *** Start programmer edit section *** (Кошка.ДатаРождения CustomAttributes) - - // *** End programmer edit section *** (Кошка.ДатаРождения CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРождения - { - get - { - // *** Start programmer edit section *** (Кошка.ДатаРождения Get start) - - // *** End programmer edit section *** (Кошка.ДатаРождения Get start) - ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаРождения; - // *** Start programmer edit section *** (Кошка.ДатаРождения Get end) - - // *** End programmer edit section *** (Кошка.ДатаРождения Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.ДатаРождения Set start) - - // *** End programmer edit section *** (Кошка.ДатаРождения Set start) - this.fДатаРождения = value; - // *** Start programmer edit section *** (Кошка.ДатаРождения Set end) - - // *** End programmer edit section *** (Кошка.ДатаРождения Set end) - } - } - - /// - /// Тип. - /// - // *** Start programmer edit section *** (Кошка.Тип CustomAttributes) - - // *** End programmer edit section *** (Кошка.Тип CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипКошки Тип - { - get - { - // *** Start programmer edit section *** (Кошка.Тип Get start) - - // *** End programmer edit section *** (Кошка.Тип Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.ТипКошки result = this.fТип; - // *** Start programmer edit section *** (Кошка.Тип Get end) - - // *** End programmer edit section *** (Кошка.Тип Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.Тип Set start) - - // *** End programmer edit section *** (Кошка.Тип Set start) - this.fТип = value; - // *** Start programmer edit section *** (Кошка.Тип Set end) - - // *** End programmer edit section *** (Кошка.Тип Set end) - } - } - - /// - /// ПородаСтрокой. - /// - // *** Start programmer edit section *** (Кошка.ПородаСтрокой CustomAttributes) - - // *** End programmer edit section *** (Кошка.ПородаСтрокой CustomAttributes) - [StrLen(255)] - public virtual string ПородаСтрокой - { - get - { - // *** Start programmer edit section *** (Кошка.ПородаСтрокой Get start) - - // *** End programmer edit section *** (Кошка.ПородаСтрокой Get start) - string result = this.fПородаСтрокой; - // *** Start programmer edit section *** (Кошка.ПородаСтрокой Get end) - - // *** End programmer edit section *** (Кошка.ПородаСтрокой Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.ПородаСтрокой Set start) - - // *** End programmer edit section *** (Кошка.ПородаСтрокой Set start) - this.fПородаСтрокой = value; - // *** Start programmer edit section *** (Кошка.ПородаСтрокой Set end) - - // *** End programmer edit section *** (Кошка.ПородаСтрокой Set end) - } - } - - /// - /// Агрессивная. - /// - // *** Start programmer edit section *** (Кошка.Агрессивная CustomAttributes) - - // *** End programmer edit section *** (Кошка.Агрессивная CustomAttributes) - public virtual bool Агрессивная - { - get - { - // *** Start programmer edit section *** (Кошка.Агрессивная Get start) - - // *** End programmer edit section *** (Кошка.Агрессивная Get start) - bool result = this.fАгрессивная; - // *** Start programmer edit section *** (Кошка.Агрессивная Get end) - - // *** End programmer edit section *** (Кошка.Агрессивная Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.Агрессивная Set start) - - // *** End programmer edit section *** (Кошка.Агрессивная Set start) - this.fАгрессивная = value; - // *** Start programmer edit section *** (Кошка.Агрессивная Set end) - - // *** End programmer edit section *** (Кошка.Агрессивная Set end) - } - } - - /// - /// КоличествоУсовСлева. - /// - // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева CustomAttributes) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСлева CustomAttributes) - [PropertyStorage("УсыСлева")] - public virtual ICSSoft.STORMNET.UserDataTypes.NullableInt КоличествоУсовСлева - { - get - { - // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Get start) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Get start) - ICSSoft.STORMNET.UserDataTypes.NullableInt result = this.fКоличествоУсовСлева; - // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Get end) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Set start) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Set start) - this.fКоличествоУсовСлева = value; - // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Set end) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Set end) - } - } - - /// - /// КоличествоУсовСправа. - /// - // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа CustomAttributes) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСправа CustomAttributes) - [PropertyStorage("УсыСправа")] - public virtual ICSSoft.STORMNET.UserDataTypes.NullableInt КоличествоУсовСправа - { - get - { - // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Get start) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Get start) - ICSSoft.STORMNET.UserDataTypes.NullableInt result = this.fКоличествоУсовСправа; - // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Get end) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Set start) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Set start) - this.fКоличествоУсовСправа = value; - // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Set end) - - // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Set end) - } - } - - /// - /// КошкаСтрокой. - /// - // *** Start programmer edit section *** (Кошка.КошкаСтрокой CustomAttributes) - - // *** End programmer edit section *** (Кошка.КошкаСтрокой CustomAttributes) - [ICSSoft.STORMNET.NotStored()] - [StrLen(255)] - public virtual string КошкаСтрокой - { - get - { - // *** Start programmer edit section *** (Кошка.КошкаСтрокой Get) - return null; - // *** End programmer edit section *** (Кошка.КошкаСтрокой Get) - } - set - { - // *** Start programmer edit section *** (Кошка.КошкаСтрокой Set) - - // *** End programmer edit section *** (Кошка.КошкаСтрокой Set) - } - } - - /// - /// Кошка. - /// - // *** Start programmer edit section *** (Кошка.Порода CustomAttributes) - - // *** End programmer edit section *** (Кошка.Порода CustomAttributes) - [NotNull()] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Порода Порода - { - get - { - // *** Start programmer edit section *** (Кошка.Порода Get start) - - // *** End programmer edit section *** (Кошка.Порода Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Порода result = this.fПорода; - // *** Start programmer edit section *** (Кошка.Порода Get end) - - // *** End programmer edit section *** (Кошка.Порода Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.Порода Set start) - - // *** End programmer edit section *** (Кошка.Порода Set start) - this.fПорода = value; - // *** Start programmer edit section *** (Кошка.Порода Set end) - - // *** End programmer edit section *** (Кошка.Порода Set end) - } - } - - /// - /// Кошка. - /// - // *** Start programmer edit section *** (Кошка.Лапа CustomAttributes) - - // *** End programmer edit section *** (Кошка.Лапа CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа Лапа - { - get - { - // *** Start programmer edit section *** (Кошка.Лапа Get start) - - // *** End programmer edit section *** (Кошка.Лапа Get start) - if ((this.fЛапа == null)) - { - this.fЛапа = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа(this); - } - NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа result = this.fЛапа; - // *** Start programmer edit section *** (Кошка.Лапа Get end) - - // *** End programmer edit section *** (Кошка.Лапа Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Кошка.Лапа Set start) - - // *** End programmer edit section *** (Кошка.Лапа Set start) - this.fЛапа = value; - // *** Start programmer edit section *** (Кошка.Лапа Set end) - - // *** End programmer edit section *** (Кошка.Лапа Set end) - } - } - - /// - /// Class views container. - /// - public class Views - { - - /// - /// "КошкаE" view. - /// - public static ICSSoft.STORMNET.View КошкаE - { - get - { - return ICSSoft.STORMNET.Information.GetView("КошкаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка)); - } - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET.Business; + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Кошка. + /// + // *** Start programmer edit section *** (Кошка CustomAttributes) + + // *** End programmer edit section *** (Кошка CustomAttributes) + [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.CatsBS, NewPlatform.Flexberry.ORM.OD" + + "ataService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + [View("КошкаE", new string[] { + "Кличка", + "ДатаРождения", + "Тип", + "ПородаСтрокой", + "Агрессивная", + "КоличествоУсовСлева", + "КоличествоУсовСправа", + "КошкаСтрокой", + "Порода.Название", + "Порода.ТипПороды.Название"})] + public class Кошка : ICSSoft.STORMNET.DataObject + { + + private bool fАгрессивная; + + private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаРождения; + + private string fКличка; + + private ICSSoft.STORMNET.UserDataTypes.NullableInt fКоличествоУсовСлева; + + private ICSSoft.STORMNET.UserDataTypes.NullableInt fКоличествоУсовСправа; + + private string fПородаСтрокой; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипКошки fТип; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Порода fПорода; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа fЛапа; + + // *** Start programmer edit section *** (Кошка CustomMembers) + + // *** End programmer edit section *** (Кошка CustomMembers) + + + /// + /// Агрессивная. + /// + // *** Start programmer edit section *** (Кошка.Агрессивная CustomAttributes) + + // *** End programmer edit section *** (Кошка.Агрессивная CustomAttributes) + public virtual bool Агрессивная + { + get + { + // *** Start programmer edit section *** (Кошка.Агрессивная Get start) + + // *** End programmer edit section *** (Кошка.Агрессивная Get start) + bool result = this.fАгрессивная; + // *** Start programmer edit section *** (Кошка.Агрессивная Get end) + + // *** End programmer edit section *** (Кошка.Агрессивная Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.Агрессивная Set start) + + // *** End programmer edit section *** (Кошка.Агрессивная Set start) + this.fАгрессивная = value; + // *** Start programmer edit section *** (Кошка.Агрессивная Set end) + + // *** End programmer edit section *** (Кошка.Агрессивная Set end) + } + } + + /// + /// ДатаРождения. + /// + // *** Start programmer edit section *** (Кошка.ДатаРождения CustomAttributes) + + // *** End programmer edit section *** (Кошка.ДатаРождения CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРождения + { + get + { + // *** Start programmer edit section *** (Кошка.ДатаРождения Get start) + + // *** End programmer edit section *** (Кошка.ДатаРождения Get start) + ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаРождения; + // *** Start programmer edit section *** (Кошка.ДатаРождения Get end) + + // *** End programmer edit section *** (Кошка.ДатаРождения Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.ДатаРождения Set start) + + // *** End programmer edit section *** (Кошка.ДатаРождения Set start) + this.fДатаРождения = value; + // *** Start programmer edit section *** (Кошка.ДатаРождения Set end) + + // *** End programmer edit section *** (Кошка.ДатаРождения Set end) + } + } + + /// + /// Кличка. + /// + // *** Start programmer edit section *** (Кошка.Кличка CustomAttributes) + + // *** End programmer edit section *** (Кошка.Кличка CustomAttributes) + [StrLen(255)] + public virtual string Кличка + { + get + { + // *** Start programmer edit section *** (Кошка.Кличка Get start) + + // *** End programmer edit section *** (Кошка.Кличка Get start) + string result = this.fКличка; + // *** Start programmer edit section *** (Кошка.Кличка Get end) + + // *** End programmer edit section *** (Кошка.Кличка Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.Кличка Set start) + + // *** End programmer edit section *** (Кошка.Кличка Set start) + this.fКличка = value; + // *** Start programmer edit section *** (Кошка.Кличка Set end) + + // *** End programmer edit section *** (Кошка.Кличка Set end) + } + } + + /// + /// КоличествоУсовСлева. + /// + // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева CustomAttributes) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСлева CustomAttributes) + [PropertyStorage("УсыСлева")] + public virtual ICSSoft.STORMNET.UserDataTypes.NullableInt КоличествоУсовСлева + { + get + { + // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Get start) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Get start) + ICSSoft.STORMNET.UserDataTypes.NullableInt result = this.fКоличествоУсовСлева; + // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Get end) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Set start) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Set start) + this.fКоличествоУсовСлева = value; + // *** Start programmer edit section *** (Кошка.КоличествоУсовСлева Set end) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСлева Set end) + } + } + + /// + /// КоличествоУсовСправа. + /// + // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа CustomAttributes) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСправа CustomAttributes) + [PropertyStorage("УсыСправа")] + public virtual ICSSoft.STORMNET.UserDataTypes.NullableInt КоличествоУсовСправа + { + get + { + // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Get start) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Get start) + ICSSoft.STORMNET.UserDataTypes.NullableInt result = this.fКоличествоУсовСправа; + // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Get end) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Set start) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Set start) + this.fКоличествоУсовСправа = value; + // *** Start programmer edit section *** (Кошка.КоличествоУсовСправа Set end) + + // *** End programmer edit section *** (Кошка.КоличествоУсовСправа Set end) + } + } + + /// + /// КошкаСтрокой. + /// + // *** Start programmer edit section *** (Кошка.КошкаСтрокой CustomAttributes) + + // *** End programmer edit section *** (Кошка.КошкаСтрокой CustomAttributes) + [ICSSoft.STORMNET.NotStored()] + [StrLen(255)] + public virtual string КошкаСтрокой + { + get + { + // *** Start programmer edit section *** (Кошка.КошкаСтрокой Get) + return null; + // *** End programmer edit section *** (Кошка.КошкаСтрокой Get) + } + set + { + // *** Start programmer edit section *** (Кошка.КошкаСтрокой Set) + + // *** End programmer edit section *** (Кошка.КошкаСтрокой Set) + } + } + + /// + /// ПородаСтрокой. + /// + // *** Start programmer edit section *** (Кошка.ПородаСтрокой CustomAttributes) + + // *** End programmer edit section *** (Кошка.ПородаСтрокой CustomAttributes) + [StrLen(255)] + public virtual string ПородаСтрокой + { + get + { + // *** Start programmer edit section *** (Кошка.ПородаСтрокой Get start) + + // *** End programmer edit section *** (Кошка.ПородаСтрокой Get start) + string result = this.fПородаСтрокой; + // *** Start programmer edit section *** (Кошка.ПородаСтрокой Get end) + + // *** End programmer edit section *** (Кошка.ПородаСтрокой Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.ПородаСтрокой Set start) + + // *** End programmer edit section *** (Кошка.ПородаСтрокой Set start) + this.fПородаСтрокой = value; + // *** Start programmer edit section *** (Кошка.ПородаСтрокой Set end) + + // *** End programmer edit section *** (Кошка.ПородаСтрокой Set end) + } + } + + /// + /// Тип. + /// + // *** Start programmer edit section *** (Кошка.Тип CustomAttributes) + + // *** End programmer edit section *** (Кошка.Тип CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипКошки Тип + { + get + { + // *** Start programmer edit section *** (Кошка.Тип Get start) + + // *** End programmer edit section *** (Кошка.Тип Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.ТипКошки result = this.fТип; + // *** Start programmer edit section *** (Кошка.Тип Get end) + + // *** End programmer edit section *** (Кошка.Тип Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.Тип Set start) + + // *** End programmer edit section *** (Кошка.Тип Set start) + this.fТип = value; + // *** Start programmer edit section *** (Кошка.Тип Set end) + + // *** End programmer edit section *** (Кошка.Тип Set end) + } + } + + /// + /// Кошка. + /// + // *** Start programmer edit section *** (Кошка.Порода CustomAttributes) + + // *** End programmer edit section *** (Кошка.Порода CustomAttributes) + [NotNull()] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Порода Порода + { + get + { + // *** Start programmer edit section *** (Кошка.Порода Get start) + + // *** End programmer edit section *** (Кошка.Порода Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Порода result = this.fПорода; + // *** Start programmer edit section *** (Кошка.Порода Get end) + + // *** End programmer edit section *** (Кошка.Порода Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.Порода Set start) + + // *** End programmer edit section *** (Кошка.Порода Set start) + this.fПорода = value; + // *** Start programmer edit section *** (Кошка.Порода Set end) + + // *** End programmer edit section *** (Кошка.Порода Set end) + } + } + + /// + /// Кошка. + /// + // *** Start programmer edit section *** (Кошка.Лапа CustomAttributes) + + // *** End programmer edit section *** (Кошка.Лапа CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа Лапа + { + get + { + // *** Start programmer edit section *** (Кошка.Лапа Get start) + + // *** End programmer edit section *** (Кошка.Лапа Get start) + if ((this.fЛапа == null)) + { + this.fЛапа = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа result = this.fЛапа; + // *** Start programmer edit section *** (Кошка.Лапа Get end) + + // *** End programmer edit section *** (Кошка.Лапа Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Кошка.Лапа Set start) + + // *** End programmer edit section *** (Кошка.Лапа Set start) + this.fЛапа = value; + // *** Start programmer edit section *** (Кошка.Лапа Set end) + + // *** End programmer edit section *** (Кошка.Лапа Set end) + } + } + + /// + /// Class views container. + /// + public class Views + { + + /// + /// "КошкаE" view. + /// + public static ICSSoft.STORMNET.View КошкаE + { + get + { + return ICSSoft.STORMNET.Information.GetView("КошкаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка)); + } + } + } + } +} + diff --git "a/Tests/Objects/\320\233\320\260\320\277\320\260.cs" "b/Tests/Objects/\320\233\320\260\320\277\320\260.cs" index eab85af1..0a28d8e4 100644 --- "a/Tests/Objects/\320\233\320\260\320\277\320\260.cs" +++ "b/Tests/Objects/\320\233\320\260\320\277\320\260.cs" @@ -1,565 +1,563 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET.Business; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Лапа. - /// - // *** Start programmer edit section *** (Лапа CustomAttributes) - - // *** End programmer edit section *** (Лапа CustomAttributes) - [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.CatsBS, NewPlatform.Flexberry.ORM.OD" + - "ataService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - [View("ЛапаE", new string[] { - "Цвет", - "Размер", - "ДатаРождения", - "БылиЛиПереломы", - "Сторона", - "Номер", - "РазмерСтрокой", - "РазмерDouble", - "РазмерFloat", - "РазмерDecimal", - "РазмерChar", - "Кошка.Кличка"})] - public class Лапа : ICSSoft.STORMNET.DataObject - { - - private string fЦвет; - - private int fРазмер; - - private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаРождения; - - private bool fБылиЛиПереломы; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Сторона fСторона; - - private int fНомер; - - private double fРазмерDouble; - - private float fРазмерFloat; - - private decimal fРазмерDecimal; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипЛапы fТипЛапы; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом fПерелом; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка fКошка; - - // *** Start programmer edit section *** (Лапа CustomMembers) - - // *** End programmer edit section *** (Лапа CustomMembers) - - - /// - /// Цвет. - /// - // *** Start programmer edit section *** (Лапа.Цвет CustomAttributes) - - // *** End programmer edit section *** (Лапа.Цвет CustomAttributes) - [StrLen(255)] - public virtual string Цвет - { - get - { - // *** Start programmer edit section *** (Лапа.Цвет Get start) - - // *** End programmer edit section *** (Лапа.Цвет Get start) - string result = this.fЦвет; - // *** Start programmer edit section *** (Лапа.Цвет Get end) - - // *** End programmer edit section *** (Лапа.Цвет Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.Цвет Set start) - - // *** End programmer edit section *** (Лапа.Цвет Set start) - this.fЦвет = value; - // *** Start programmer edit section *** (Лапа.Цвет Set end) - - // *** End programmer edit section *** (Лапа.Цвет Set end) - } - } - - /// - /// Размер. - /// - // *** Start programmer edit section *** (Лапа.Размер CustomAttributes) - - // *** End programmer edit section *** (Лапа.Размер CustomAttributes) - public virtual int Размер - { - get - { - // *** Start programmer edit section *** (Лапа.Размер Get start) - - // *** End programmer edit section *** (Лапа.Размер Get start) - int result = this.fРазмер; - // *** Start programmer edit section *** (Лапа.Размер Get end) - - // *** End programmer edit section *** (Лапа.Размер Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.Размер Set start) - - // *** End programmer edit section *** (Лапа.Размер Set start) - this.fРазмер = value; - // *** Start programmer edit section *** (Лапа.Размер Set end) - - // *** End programmer edit section *** (Лапа.Размер Set end) - } - } - - /// - /// ДатаРождения. - /// - // *** Start programmer edit section *** (Лапа.ДатаРождения CustomAttributes) - - // *** End programmer edit section *** (Лапа.ДатаРождения CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРождения - { - get - { - // *** Start programmer edit section *** (Лапа.ДатаРождения Get start) - - // *** End programmer edit section *** (Лапа.ДатаРождения Get start) - ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаРождения; - // *** Start programmer edit section *** (Лапа.ДатаРождения Get end) - - // *** End programmer edit section *** (Лапа.ДатаРождения Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.ДатаРождения Set start) - - // *** End programmer edit section *** (Лапа.ДатаРождения Set start) - this.fДатаРождения = value; - // *** Start programmer edit section *** (Лапа.ДатаРождения Set end) - - // *** End programmer edit section *** (Лапа.ДатаРождения Set end) - } - } - - /// - /// БылиЛиПереломы. - /// - // *** Start programmer edit section *** (Лапа.БылиЛиПереломы CustomAttributes) - - // *** End programmer edit section *** (Лапа.БылиЛиПереломы CustomAttributes) - public virtual bool БылиЛиПереломы - { - get - { - // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Get start) - - // *** End programmer edit section *** (Лапа.БылиЛиПереломы Get start) - bool result = this.fБылиЛиПереломы; - // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Get end) - - // *** End programmer edit section *** (Лапа.БылиЛиПереломы Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Set start) - - // *** End programmer edit section *** (Лапа.БылиЛиПереломы Set start) - this.fБылиЛиПереломы = value; - // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Set end) - - // *** End programmer edit section *** (Лапа.БылиЛиПереломы Set end) - } - } - - /// - /// Сторона. - /// - // *** Start programmer edit section *** (Лапа.Сторона CustomAttributes) - - // *** End programmer edit section *** (Лапа.Сторона CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Сторона Сторона - { - get - { - // *** Start programmer edit section *** (Лапа.Сторона Get start) - - // *** End programmer edit section *** (Лапа.Сторона Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Сторона result = this.fСторона; - // *** Start programmer edit section *** (Лапа.Сторона Get end) - - // *** End programmer edit section *** (Лапа.Сторона Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.Сторона Set start) - - // *** End programmer edit section *** (Лапа.Сторона Set start) - this.fСторона = value; - // *** Start programmer edit section *** (Лапа.Сторона Set end) - - // *** End programmer edit section *** (Лапа.Сторона Set end) - } - } - - /// - /// Номер. - /// - // *** Start programmer edit section *** (Лапа.Номер CustomAttributes) - - // *** End programmer edit section *** (Лапа.Номер CustomAttributes) - public virtual int Номер - { - get - { - // *** Start programmer edit section *** (Лапа.Номер Get start) - - // *** End programmer edit section *** (Лапа.Номер Get start) - int result = this.fНомер; - // *** Start programmer edit section *** (Лапа.Номер Get end) - - // *** End programmer edit section *** (Лапа.Номер Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.Номер Set start) - - // *** End programmer edit section *** (Лапа.Номер Set start) - this.fНомер = value; - // *** Start programmer edit section *** (Лапа.Номер Set end) - - // *** End programmer edit section *** (Лапа.Номер Set end) - } - } - - /// - /// РазмерСтрокой. - /// - // *** Start programmer edit section *** (Лапа.РазмерСтрокой CustomAttributes) - - // *** End programmer edit section *** (Лапа.РазмерСтрокой CustomAttributes) - [ICSSoft.STORMNET.NotStored()] - [StrLen(255)] - public virtual string РазмерСтрокой - { - get - { - // *** Start programmer edit section *** (Лапа.РазмерСтрокой Get) - return null; - // *** End programmer edit section *** (Лапа.РазмерСтрокой Get) - } - set - { - // *** Start programmer edit section *** (Лапа.РазмерСтрокой Set) - - // *** End programmer edit section *** (Лапа.РазмерСтрокой Set) - } - } - - /// - /// РазмерDouble. - /// - // *** Start programmer edit section *** (Лапа.РазмерDouble CustomAttributes) - - // *** End programmer edit section *** (Лапа.РазмерDouble CustomAttributes) - public virtual double РазмерDouble - { - get - { - // *** Start programmer edit section *** (Лапа.РазмерDouble Get start) - - // *** End programmer edit section *** (Лапа.РазмерDouble Get start) - double result = this.fРазмерDouble; - // *** Start programmer edit section *** (Лапа.РазмерDouble Get end) - - // *** End programmer edit section *** (Лапа.РазмерDouble Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.РазмерDouble Set start) - - // *** End programmer edit section *** (Лапа.РазмерDouble Set start) - this.fРазмерDouble = value; - // *** Start programmer edit section *** (Лапа.РазмерDouble Set end) - - // *** End programmer edit section *** (Лапа.РазмерDouble Set end) - } - } - - /// - /// РазмерFloat. - /// - // *** Start programmer edit section *** (Лапа.РазмерFloat CustomAttributes) - - // *** End programmer edit section *** (Лапа.РазмерFloat CustomAttributes) - public virtual float РазмерFloat - { - get - { - // *** Start programmer edit section *** (Лапа.РазмерFloat Get start) - - // *** End programmer edit section *** (Лапа.РазмерFloat Get start) - float result = this.fРазмерFloat; - // *** Start programmer edit section *** (Лапа.РазмерFloat Get end) - - // *** End programmer edit section *** (Лапа.РазмерFloat Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.РазмерFloat Set start) - - // *** End programmer edit section *** (Лапа.РазмерFloat Set start) - this.fРазмерFloat = value; - // *** Start programmer edit section *** (Лапа.РазмерFloat Set end) - - // *** End programmer edit section *** (Лапа.РазмерFloat Set end) - } - } - - /// - /// РазмерDecimal. - /// - // *** Start programmer edit section *** (Лапа.РазмерDecimal CustomAttributes) - - // *** End programmer edit section *** (Лапа.РазмерDecimal CustomAttributes) - public virtual decimal РазмерDecimal - { - get - { - // *** Start programmer edit section *** (Лапа.РазмерDecimal Get start) - - // *** End programmer edit section *** (Лапа.РазмерDecimal Get start) - decimal result = this.fРазмерDecimal; - // *** Start programmer edit section *** (Лапа.РазмерDecimal Get end) - - // *** End programmer edit section *** (Лапа.РазмерDecimal Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.РазмерDecimal Set start) - - // *** End programmer edit section *** (Лапа.РазмерDecimal Set start) - this.fРазмерDecimal = value; - // *** Start programmer edit section *** (Лапа.РазмерDecimal Set end) - - // *** End programmer edit section *** (Лапа.РазмерDecimal Set end) - } - } - - /// - /// РазмерChar. - /// - // *** Start programmer edit section *** (Лапа.РазмерChar CustomAttributes) - - // *** End programmer edit section *** (Лапа.РазмерChar CustomAttributes) - [ICSSoft.STORMNET.NotStored()] - public virtual char РазмерChar - { - get - { - // *** Start programmer edit section *** (Лапа.РазмерChar Get) - return ' '; - // *** End programmer edit section *** (Лапа.РазмерChar Get) - } - set - { - // *** Start programmer edit section *** (Лапа.РазмерChar Set) - - // *** End programmer edit section *** (Лапа.РазмерChar Set) - } - } - - /// - /// Лапа. - /// - // *** Start programmer edit section *** (Лапа.ТипЛапы CustomAttributes) - - // *** End programmer edit section *** (Лапа.ТипЛапы CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипЛапы ТипЛапы - { - get - { - // *** Start programmer edit section *** (Лапа.ТипЛапы Get start) - - // *** End programmer edit section *** (Лапа.ТипЛапы Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.ТипЛапы result = this.fТипЛапы; - // *** Start programmer edit section *** (Лапа.ТипЛапы Get end) - - // *** End programmer edit section *** (Лапа.ТипЛапы Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.ТипЛапы Set start) - - // *** End programmer edit section *** (Лапа.ТипЛапы Set start) - this.fТипЛапы = value; - // *** Start programmer edit section *** (Лапа.ТипЛапы Set end) - - // *** End programmer edit section *** (Лапа.ТипЛапы Set end) - } - } - - /// - /// Лапа. - /// - // *** Start programmer edit section *** (Лапа.Перелом CustomAttributes) - - // *** End programmer edit section *** (Лапа.Перелом CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом Перелом - { - get - { - // *** Start programmer edit section *** (Лапа.Перелом Get start) - - // *** End programmer edit section *** (Лапа.Перелом Get start) - if ((this.fПерелом == null)) - { - this.fПерелом = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом(this); - } - NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом result = this.fПерелом; - // *** Start programmer edit section *** (Лапа.Перелом Get end) - - // *** End programmer edit section *** (Лапа.Перелом Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.Перелом Set start) - - // *** End programmer edit section *** (Лапа.Перелом Set start) - this.fПерелом = value; - // *** Start programmer edit section *** (Лапа.Перелом Set end) - - // *** End programmer edit section *** (Лапа.Перелом Set end) - } - } - - /// - /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка. - /// - // *** Start programmer edit section *** (Лапа.Кошка CustomAttributes) - - // *** End programmer edit section *** (Лапа.Кошка CustomAttributes) - [Agregator()] - [NotNull()] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка Кошка - { - get - { - // *** Start programmer edit section *** (Лапа.Кошка Get start) - - // *** End programmer edit section *** (Лапа.Кошка Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка result = this.fКошка; - // *** Start programmer edit section *** (Лапа.Кошка Get end) - - // *** End programmer edit section *** (Лапа.Кошка Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Лапа.Кошка Set start) - - // *** End programmer edit section *** (Лапа.Кошка Set start) - this.fКошка = value; - // *** Start programmer edit section *** (Лапа.Кошка Set end) - - // *** End programmer edit section *** (Лапа.Кошка Set end) - } - } - - /// - /// Class views container. - /// - public class Views - { - - /// - /// "ЛапаE" view. - /// - public static ICSSoft.STORMNET.View ЛапаE - { - get - { - return ICSSoft.STORMNET.Information.GetView("ЛапаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа)); - } - } - } - } - - /// - /// Detail array of Лапа. - /// - // *** Start programmer edit section *** (DetailArrayDetailArrayOfЛапа CustomAttributes) - - // *** End programmer edit section *** (DetailArrayDetailArrayOfЛапа CustomAttributes) - public class DetailArrayOfЛапа : ICSSoft.STORMNET.DetailArray - { - - // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа members) - - // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа members) - - - /// - /// Construct detail array. - /// - /// - /// Returns object with type Лапа by index. - /// - /// - /// Adds object with type Лапа. - /// - public DetailArrayOfЛапа(NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка fКошка) : - base(typeof(Лапа), ((ICSSoft.STORMNET.DataObject)(fКошка))) - { - } - - public NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа this[int index] - { - get - { - return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа)(this.ItemByIndex(index))); - } - } - - public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа dataobject) - { - this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET.Business; + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Лапа. + /// + // *** Start programmer edit section *** (Лапа CustomAttributes) + + // *** End programmer edit section *** (Лапа CustomAttributes) + [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.CatsBS, NewPlatform.Flexberry.ORM.OD" + + "ataService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + [View("ЛапаE", new string[] { + "Цвет", + "Размер", + "ДатаРождения", + "БылиЛиПереломы", + "Сторона", + "Номер", + "РазмерСтрокой", + "РазмерDouble", + "РазмерFloat", + "РазмерDecimal", + "РазмерChar", + "Кошка.Кличка"})] + public class Лапа : ICSSoft.STORMNET.DataObject + { + + private bool fБылиЛиПереломы; + + private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаРождения; + + private int fНомер; + + private int fРазмер; + + private decimal fРазмерDecimal; + + private double fРазмерDouble; + + private float fРазмерFloat; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Сторона fСторона; + + private string fЦвет; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипЛапы fТипЛапы; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом fПерелом; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка fКошка; + + // *** Start programmer edit section *** (Лапа CustomMembers) + + // *** End programmer edit section *** (Лапа CustomMembers) + + + /// + /// БылиЛиПереломы. + /// + // *** Start programmer edit section *** (Лапа.БылиЛиПереломы CustomAttributes) + + // *** End programmer edit section *** (Лапа.БылиЛиПереломы CustomAttributes) + public virtual bool БылиЛиПереломы + { + get + { + // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Get start) + + // *** End programmer edit section *** (Лапа.БылиЛиПереломы Get start) + bool result = this.fБылиЛиПереломы; + // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Get end) + + // *** End programmer edit section *** (Лапа.БылиЛиПереломы Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Set start) + + // *** End programmer edit section *** (Лапа.БылиЛиПереломы Set start) + this.fБылиЛиПереломы = value; + // *** Start programmer edit section *** (Лапа.БылиЛиПереломы Set end) + + // *** End programmer edit section *** (Лапа.БылиЛиПереломы Set end) + } + } + + /// + /// ДатаРождения. + /// + // *** Start programmer edit section *** (Лапа.ДатаРождения CustomAttributes) + + // *** End programmer edit section *** (Лапа.ДатаРождения CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРождения + { + get + { + // *** Start programmer edit section *** (Лапа.ДатаРождения Get start) + + // *** End programmer edit section *** (Лапа.ДатаРождения Get start) + ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаРождения; + // *** Start programmer edit section *** (Лапа.ДатаРождения Get end) + + // *** End programmer edit section *** (Лапа.ДатаРождения Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.ДатаРождения Set start) + + // *** End programmer edit section *** (Лапа.ДатаРождения Set start) + this.fДатаРождения = value; + // *** Start programmer edit section *** (Лапа.ДатаРождения Set end) + + // *** End programmer edit section *** (Лапа.ДатаРождения Set end) + } + } + + /// + /// Номер. + /// + // *** Start programmer edit section *** (Лапа.Номер CustomAttributes) + + // *** End programmer edit section *** (Лапа.Номер CustomAttributes) + public virtual int Номер + { + get + { + // *** Start programmer edit section *** (Лапа.Номер Get start) + + // *** End programmer edit section *** (Лапа.Номер Get start) + int result = this.fНомер; + // *** Start programmer edit section *** (Лапа.Номер Get end) + + // *** End programmer edit section *** (Лапа.Номер Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.Номер Set start) + + // *** End programmer edit section *** (Лапа.Номер Set start) + this.fНомер = value; + // *** Start programmer edit section *** (Лапа.Номер Set end) + + // *** End programmer edit section *** (Лапа.Номер Set end) + } + } + + /// + /// Размер. + /// + // *** Start programmer edit section *** (Лапа.Размер CustomAttributes) + + // *** End programmer edit section *** (Лапа.Размер CustomAttributes) + public virtual int Размер + { + get + { + // *** Start programmer edit section *** (Лапа.Размер Get start) + + // *** End programmer edit section *** (Лапа.Размер Get start) + int result = this.fРазмер; + // *** Start programmer edit section *** (Лапа.Размер Get end) + + // *** End programmer edit section *** (Лапа.Размер Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.Размер Set start) + + // *** End programmer edit section *** (Лапа.Размер Set start) + this.fРазмер = value; + // *** Start programmer edit section *** (Лапа.Размер Set end) + + // *** End programmer edit section *** (Лапа.Размер Set end) + } + } + + /// + /// РазмерСтрокой. + /// + // *** Start programmer edit section *** (Лапа.РазмерСтрокой CustomAttributes) + + // *** End programmer edit section *** (Лапа.РазмерСтрокой CustomAttributes) + [ICSSoft.STORMNET.NotStored()] + [StrLen(255)] + public virtual string РазмерСтрокой + { + get + { + // *** Start programmer edit section *** (Лапа.РазмерСтрокой Get) + return null; + // *** End programmer edit section *** (Лапа.РазмерСтрокой Get) + } + set + { + // *** Start programmer edit section *** (Лапа.РазмерСтрокой Set) + + // *** End programmer edit section *** (Лапа.РазмерСтрокой Set) + } + } + + /// + /// РазмерChar. + /// + // *** Start programmer edit section *** (Лапа.РазмерChar CustomAttributes) + + // *** End programmer edit section *** (Лапа.РазмерChar CustomAttributes) + [ICSSoft.STORMNET.NotStored()] + public virtual char РазмерChar + { + get + { + // *** Start programmer edit section *** (Лапа.РазмерChar Get) + return ' '; + // *** End programmer edit section *** (Лапа.РазмерChar Get) + } + set + { + // *** Start programmer edit section *** (Лапа.РазмерChar Set) + + // *** End programmer edit section *** (Лапа.РазмерChar Set) + } + } + + /// + /// РазмерDecimal. + /// + // *** Start programmer edit section *** (Лапа.РазмерDecimal CustomAttributes) + + // *** End programmer edit section *** (Лапа.РазмерDecimal CustomAttributes) + public virtual decimal РазмерDecimal + { + get + { + // *** Start programmer edit section *** (Лапа.РазмерDecimal Get start) + + // *** End programmer edit section *** (Лапа.РазмерDecimal Get start) + decimal result = this.fРазмерDecimal; + // *** Start programmer edit section *** (Лапа.РазмерDecimal Get end) + + // *** End programmer edit section *** (Лапа.РазмерDecimal Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.РазмерDecimal Set start) + + // *** End programmer edit section *** (Лапа.РазмерDecimal Set start) + this.fРазмерDecimal = value; + // *** Start programmer edit section *** (Лапа.РазмерDecimal Set end) + + // *** End programmer edit section *** (Лапа.РазмерDecimal Set end) + } + } + + /// + /// РазмерDouble. + /// + // *** Start programmer edit section *** (Лапа.РазмерDouble CustomAttributes) + + // *** End programmer edit section *** (Лапа.РазмерDouble CustomAttributes) + public virtual double РазмерDouble + { + get + { + // *** Start programmer edit section *** (Лапа.РазмерDouble Get start) + + // *** End programmer edit section *** (Лапа.РазмерDouble Get start) + double result = this.fРазмерDouble; + // *** Start programmer edit section *** (Лапа.РазмерDouble Get end) + + // *** End programmer edit section *** (Лапа.РазмерDouble Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.РазмерDouble Set start) + + // *** End programmer edit section *** (Лапа.РазмерDouble Set start) + this.fРазмерDouble = value; + // *** Start programmer edit section *** (Лапа.РазмерDouble Set end) + + // *** End programmer edit section *** (Лапа.РазмерDouble Set end) + } + } + + /// + /// РазмерFloat. + /// + // *** Start programmer edit section *** (Лапа.РазмерFloat CustomAttributes) + + // *** End programmer edit section *** (Лапа.РазмерFloat CustomAttributes) + public virtual float РазмерFloat + { + get + { + // *** Start programmer edit section *** (Лапа.РазмерFloat Get start) + + // *** End programmer edit section *** (Лапа.РазмерFloat Get start) + float result = this.fРазмерFloat; + // *** Start programmer edit section *** (Лапа.РазмерFloat Get end) + + // *** End programmer edit section *** (Лапа.РазмерFloat Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.РазмерFloat Set start) + + // *** End programmer edit section *** (Лапа.РазмерFloat Set start) + this.fРазмерFloat = value; + // *** Start programmer edit section *** (Лапа.РазмерFloat Set end) + + // *** End programmer edit section *** (Лапа.РазмерFloat Set end) + } + } + + /// + /// Сторона. + /// + // *** Start programmer edit section *** (Лапа.Сторона CustomAttributes) + + // *** End programmer edit section *** (Лапа.Сторона CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Сторона Сторона + { + get + { + // *** Start programmer edit section *** (Лапа.Сторона Get start) + + // *** End programmer edit section *** (Лапа.Сторона Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Сторона result = this.fСторона; + // *** Start programmer edit section *** (Лапа.Сторона Get end) + + // *** End programmer edit section *** (Лапа.Сторона Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.Сторона Set start) + + // *** End programmer edit section *** (Лапа.Сторона Set start) + this.fСторона = value; + // *** Start programmer edit section *** (Лапа.Сторона Set end) + + // *** End programmer edit section *** (Лапа.Сторона Set end) + } + } + + /// + /// Цвет. + /// + // *** Start programmer edit section *** (Лапа.Цвет CustomAttributes) + + // *** End programmer edit section *** (Лапа.Цвет CustomAttributes) + [StrLen(255)] + public virtual string Цвет + { + get + { + // *** Start programmer edit section *** (Лапа.Цвет Get start) + + // *** End programmer edit section *** (Лапа.Цвет Get start) + string result = this.fЦвет; + // *** Start programmer edit section *** (Лапа.Цвет Get end) + + // *** End programmer edit section *** (Лапа.Цвет Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.Цвет Set start) + + // *** End programmer edit section *** (Лапа.Цвет Set start) + this.fЦвет = value; + // *** Start programmer edit section *** (Лапа.Цвет Set end) + + // *** End programmer edit section *** (Лапа.Цвет Set end) + } + } + + /// + /// Лапа. + /// + // *** Start programmer edit section *** (Лапа.ТипЛапы CustomAttributes) + + // *** End programmer edit section *** (Лапа.ТипЛапы CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипЛапы ТипЛапы + { + get + { + // *** Start programmer edit section *** (Лапа.ТипЛапы Get start) + + // *** End programmer edit section *** (Лапа.ТипЛапы Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.ТипЛапы result = this.fТипЛапы; + // *** Start programmer edit section *** (Лапа.ТипЛапы Get end) + + // *** End programmer edit section *** (Лапа.ТипЛапы Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.ТипЛапы Set start) + + // *** End programmer edit section *** (Лапа.ТипЛапы Set start) + this.fТипЛапы = value; + // *** Start programmer edit section *** (Лапа.ТипЛапы Set end) + + // *** End programmer edit section *** (Лапа.ТипЛапы Set end) + } + } + + /// + /// Лапа. + /// + // *** Start programmer edit section *** (Лапа.Перелом CustomAttributes) + + // *** End programmer edit section *** (Лапа.Перелом CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом Перелом + { + get + { + // *** Start programmer edit section *** (Лапа.Перелом Get start) + + // *** End programmer edit section *** (Лапа.Перелом Get start) + if ((this.fПерелом == null)) + { + this.fПерелом = new NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом(this); + } + NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом result = this.fПерелом; + // *** Start programmer edit section *** (Лапа.Перелом Get end) + + // *** End programmer edit section *** (Лапа.Перелом Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.Перелом Set start) + + // *** End programmer edit section *** (Лапа.Перелом Set start) + this.fПерелом = value; + // *** Start programmer edit section *** (Лапа.Перелом Set end) + + // *** End programmer edit section *** (Лапа.Перелом Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка. + /// + // *** Start programmer edit section *** (Лапа.Кошка CustomAttributes) + + // *** End programmer edit section *** (Лапа.Кошка CustomAttributes) + [Agregator()] + [NotNull()] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка Кошка + { + get + { + // *** Start programmer edit section *** (Лапа.Кошка Get start) + + // *** End programmer edit section *** (Лапа.Кошка Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка result = this.fКошка; + // *** Start programmer edit section *** (Лапа.Кошка Get end) + + // *** End programmer edit section *** (Лапа.Кошка Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Лапа.Кошка Set start) + + // *** End programmer edit section *** (Лапа.Кошка Set start) + this.fКошка = value; + // *** Start programmer edit section *** (Лапа.Кошка Set end) + + // *** End programmer edit section *** (Лапа.Кошка Set end) + } + } + + /// + /// Class views container. + /// + public class Views + { + + /// + /// "ЛапаE" view. + /// + public static ICSSoft.STORMNET.View ЛапаE + { + get + { + return ICSSoft.STORMNET.Information.GetView("ЛапаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа)); + } + } + } + } + + /// + /// Detail array of Лапа. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfЛапа CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfЛапа CustomAttributes) + public class DetailArrayOfЛапа : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfЛапа members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type Лапа by index. + /// + /// + /// Adds object with type Лапа. + /// + public DetailArrayOfЛапа(NewPlatform.Flexberry.ORM.ODataService.Tests.Кошка fКошка) : + base(typeof(Лапа), ((ICSSoft.STORMNET.DataObject)(fКошка))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git "a/Tests/Objects/\320\233\320\265\321\201.cs" "b/Tests/Objects/\320\233\320\265\321\201.cs" index 58845ab6..1eaea335 100644 --- "a/Tests/Objects/\320\233\320\265\321\201.cs" +++ "b/Tests/Objects/\320\233\320\265\321\201.cs" @@ -1,21 +1,18 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET.Business; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -46,148 +43,148 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Страна.Название as \'Название\'"})] public class Лес : ICSSoft.STORMNET.DataObject { - + + private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаПоследнегоОсмотра; + + private bool fЗаповедник; + private string fНазвание; - + private int fПлощадь; - - private bool fЗаповедник; - - private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаПоследнегоОсмотра; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Страна fСтрана; - + // *** Start programmer edit section *** (Лес CustomMembers) // *** End programmer edit section *** (Лес CustomMembers) - + /// - /// Название. + /// ДатаПоследнегоОсмотра. /// - // *** Start programmer edit section *** (Лес.Название CustomAttributes) + // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра CustomAttributes) - // *** End programmer edit section *** (Лес.Название CustomAttributes) - [StrLen(255)] - public virtual string Название + // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра CustomAttributes) + [PropertyStorage("ДатаПослОсмотра")] + public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаПоследнегоОсмотра { get { - // *** Start programmer edit section *** (Лес.Название Get start) + // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get start) - // *** End programmer edit section *** (Лес.Название Get start) - string result = this.fНазвание; - // *** Start programmer edit section *** (Лес.Название Get end) + // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get start) + ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаПоследнегоОсмотра; + // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get end) - // *** End programmer edit section *** (Лес.Название Get end) + // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get end) return result; } set { - // *** Start programmer edit section *** (Лес.Название Set start) + // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set start) - // *** End programmer edit section *** (Лес.Название Set start) - this.fНазвание = value; - // *** Start programmer edit section *** (Лес.Название Set end) + // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set start) + this.fДатаПоследнегоОсмотра = value; + // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set end) - // *** End programmer edit section *** (Лес.Название Set end) + // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set end) } } - + /// - /// Площадь. + /// Заповедник. /// - // *** Start programmer edit section *** (Лес.Площадь CustomAttributes) + // *** Start programmer edit section *** (Лес.Заповедник CustomAttributes) - // *** End programmer edit section *** (Лес.Площадь CustomAttributes) - public virtual int Площадь + // *** End programmer edit section *** (Лес.Заповедник CustomAttributes) + public virtual bool Заповедник { get { - // *** Start programmer edit section *** (Лес.Площадь Get start) + // *** Start programmer edit section *** (Лес.Заповедник Get start) - // *** End programmer edit section *** (Лес.Площадь Get start) - int result = this.fПлощадь; - // *** Start programmer edit section *** (Лес.Площадь Get end) + // *** End programmer edit section *** (Лес.Заповедник Get start) + bool result = this.fЗаповедник; + // *** Start programmer edit section *** (Лес.Заповедник Get end) - // *** End programmer edit section *** (Лес.Площадь Get end) + // *** End programmer edit section *** (Лес.Заповедник Get end) return result; } set { - // *** Start programmer edit section *** (Лес.Площадь Set start) + // *** Start programmer edit section *** (Лес.Заповедник Set start) - // *** End programmer edit section *** (Лес.Площадь Set start) - this.fПлощадь = value; - // *** Start programmer edit section *** (Лес.Площадь Set end) + // *** End programmer edit section *** (Лес.Заповедник Set start) + this.fЗаповедник = value; + // *** Start programmer edit section *** (Лес.Заповедник Set end) - // *** End programmer edit section *** (Лес.Площадь Set end) + // *** End programmer edit section *** (Лес.Заповедник Set end) } } - + /// - /// Заповедник. + /// Название. /// - // *** Start programmer edit section *** (Лес.Заповедник CustomAttributes) + // *** Start programmer edit section *** (Лес.Название CustomAttributes) - // *** End programmer edit section *** (Лес.Заповедник CustomAttributes) - public virtual bool Заповедник + // *** End programmer edit section *** (Лес.Название CustomAttributes) + [StrLen(255)] + public virtual string Название { get { - // *** Start programmer edit section *** (Лес.Заповедник Get start) + // *** Start programmer edit section *** (Лес.Название Get start) - // *** End programmer edit section *** (Лес.Заповедник Get start) - bool result = this.fЗаповедник; - // *** Start programmer edit section *** (Лес.Заповедник Get end) + // *** End programmer edit section *** (Лес.Название Get start) + string result = this.fНазвание; + // *** Start programmer edit section *** (Лес.Название Get end) - // *** End programmer edit section *** (Лес.Заповедник Get end) + // *** End programmer edit section *** (Лес.Название Get end) return result; } set { - // *** Start programmer edit section *** (Лес.Заповедник Set start) + // *** Start programmer edit section *** (Лес.Название Set start) - // *** End programmer edit section *** (Лес.Заповедник Set start) - this.fЗаповедник = value; - // *** Start programmer edit section *** (Лес.Заповедник Set end) + // *** End programmer edit section *** (Лес.Название Set start) + this.fНазвание = value; + // *** Start programmer edit section *** (Лес.Название Set end) - // *** End programmer edit section *** (Лес.Заповедник Set end) + // *** End programmer edit section *** (Лес.Название Set end) } } - + /// - /// ДатаПоследнегоОсмотра. + /// Площадь. /// - // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра CustomAttributes) + // *** Start programmer edit section *** (Лес.Площадь CustomAttributes) - // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра CustomAttributes) - [PropertyStorage("ДатаПослОсмотра")] - public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаПоследнегоОсмотра + // *** End programmer edit section *** (Лес.Площадь CustomAttributes) + public virtual int Площадь { get { - // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get start) + // *** Start programmer edit section *** (Лес.Площадь Get start) - // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get start) - ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаПоследнегоОсмотра; - // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get end) + // *** End programmer edit section *** (Лес.Площадь Get start) + int result = this.fПлощадь; + // *** Start programmer edit section *** (Лес.Площадь Get end) - // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Get end) + // *** End programmer edit section *** (Лес.Площадь Get end) return result; } set { - // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set start) + // *** Start programmer edit section *** (Лес.Площадь Set start) - // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set start) - this.fДатаПоследнегоОсмотра = value; - // *** Start programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set end) + // *** End programmer edit section *** (Лес.Площадь Set start) + this.fПлощадь = value; + // *** Start programmer edit section *** (Лес.Площадь Set end) - // *** End programmer edit section *** (Лес.ДатаПоследнегоОсмотра Set end) + // *** End programmer edit section *** (Лес.Площадь Set end) } } - + /// /// Лес. /// @@ -220,13 +217,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Страна Стр // *** End programmer edit section *** (Лес.Страна Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "ЛесE" view. /// @@ -237,7 +234,7 @@ public static ICSSoft.STORMNET.View ЛесE return ICSSoft.STORMNET.Information.GetView("ЛесE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Лес)); } } - + /// /// "ЛесL" view. /// @@ -251,3 +248,4 @@ public static ICSSoft.STORMNET.View ЛесL } } } + diff --git "a/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\200.cs" "b/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\200.cs" index 7f254292..69010d7b 100644 --- "a/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\200.cs" +++ "b/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\200.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,16 +27,16 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class Мастер : ICSSoft.STORMNET.DataObject { - + private string fprop; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер2 fМастер2; - + // *** Start programmer edit section *** (Мастер CustomMembers) // *** End programmer edit section *** (Мастер CustomMembers) - + /// /// prop. /// @@ -71,7 +68,7 @@ public virtual string prop // *** End programmer edit section *** (Мастер.prop Set end) } } - + /// /// Мастер. /// @@ -106,3 +103,4 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер2 Мас } } } + diff --git "a/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\2002.cs" "b/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\2002.cs" index 3a282a17..59ca0237 100644 --- "a/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\2002.cs" +++ "b/Tests/Objects/\320\234\320\260\321\201\321\202\320\265\321\2002.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,14 +27,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class Мастер2 : ICSSoft.STORMNET.DataObject { - + private int fсвойство2; - + // *** Start programmer edit section *** (Мастер2 CustomMembers) // *** End programmer edit section *** (Мастер2 CustomMembers) - + /// /// свойство2. /// @@ -70,3 +67,4 @@ public virtual int свойство2 } } } + diff --git "a/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs" "b/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs" index 2f2b5414..854f42cf 100644 --- "a/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs" +++ "b/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs" @@ -1,23 +1,20 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET.Business; using ICSSoft.STORMNET; using ICSSoft.STORMNET.Business.Audit; using ICSSoft.STORMNET.Business.Audit.Objects; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -75,6 +72,13 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "ЛесОбитания.Название as \'Название\'"})] [View("МедведьShort", new string[] { "ПорядковыйНомер as \'Порядковый номер\'"})] + [View("МедведьUpdateView", new string[] { + "ПорядковыйНомер as \'Порядковый номер\'", + "Вес as \'Вес\'", + "ЦветГлаз as \'Цвет глаз\'", + "Пол as \'Пол\'", + "ДатаРождения as \'Дата рождения\'", + "ПолеБС"})] [View("МедведьСДелейломИВычислимымСвойством", new string[] { "ПорядковыйНомер as \'Порядковый номер\'", "Вес as \'Вес\'", @@ -92,168 +96,156 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests ""})] public class Медведь : ICSSoft.STORMNET.DataObject, IDataObjectWithAuditFields { - + + private int fВес; + + private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаРождения; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.tПол fПол; + private string fПолеБС; - + private int fПорядковыйНомер; - - private int fВес; - + private string fЦветГлаз; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.tПол fПол; - - private ICSSoft.STORMNET.UserDataTypes.NullableDateTime fДатаРождения; - + private System.Nullable fCreateTime; - + private string fCreator; - - private System.Nullable fEditTime; - + private string fEditor; - + + private System.Nullable fEditTime; + private NewPlatform.Flexberry.ORM.ODataService.Tests.Лес fЛесОбитания; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь fМама; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь fПапа; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Страна fСтранаРождения; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfБерлога fБерлога; - + // *** Start programmer edit section *** (Медведь CustomMembers) // *** End programmer edit section *** (Медведь CustomMembers) - + /// - /// ПолеБС. + /// Вес. /// - // *** Start programmer edit section *** (Медведь.ПолеБС CustomAttributes) + // *** Start programmer edit section *** (Медведь.Вес CustomAttributes) - // *** End programmer edit section *** (Медведь.ПолеБС CustomAttributes) - [StrLen(255)] - public virtual string ПолеБС + // *** End programmer edit section *** (Медведь.Вес CustomAttributes) + public virtual int Вес { get { - // *** Start programmer edit section *** (Медведь.ПолеБС Get start) + // *** Start programmer edit section *** (Медведь.Вес Get start) - // *** End programmer edit section *** (Медведь.ПолеБС Get start) - string result = this.fПолеБС; - // *** Start programmer edit section *** (Медведь.ПолеБС Get end) + // *** End programmer edit section *** (Медведь.Вес Get start) + int result = this.fВес; + // *** Start programmer edit section *** (Медведь.Вес Get end) - // *** End programmer edit section *** (Медведь.ПолеБС Get end) + // *** End programmer edit section *** (Медведь.Вес Get end) return result; } set { - // *** Start programmer edit section *** (Медведь.ПолеБС Set start) + // *** Start programmer edit section *** (Медведь.Вес Set start) - // *** End programmer edit section *** (Медведь.ПолеБС Set start) - this.fПолеБС = value; - // *** Start programmer edit section *** (Медведь.ПолеБС Set end) + // *** End programmer edit section *** (Медведь.Вес Set start) + this.fВес = value; + // *** Start programmer edit section *** (Медведь.Вес Set end) - // *** End programmer edit section *** (Медведь.ПолеБС Set end) + // *** End programmer edit section *** (Медведь.Вес Set end) } } - + /// - /// ПорядковыйНомер. + /// ВычислимоеПоле. /// - // *** Start programmer edit section *** (Медведь.ПорядковыйНомер CustomAttributes) + // *** Start programmer edit section *** (Медведь.ВычислимоеПоле CustomAttributes) - // *** End programmer edit section *** (Медведь.ПорядковыйНомер CustomAttributes) - public virtual int ПорядковыйНомер + // *** End programmer edit section *** (Медведь.ВычислимоеПоле CustomAttributes) + [ICSSoft.STORMNET.NotStored()] + [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.MSSQLDataService), "@ПорядковыйНомер@ + @Вес@")] + public virtual int ВычислимоеПоле { get { - // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Get start) - - // *** End programmer edit section *** (Медведь.ПорядковыйНомер Get start) - int result = this.fПорядковыйНомер; - // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Get end) - - // *** End programmer edit section *** (Медведь.ПорядковыйНомер Get end) - return result; + // *** Start programmer edit section *** (Медведь.ВычислимоеПоле Get) + return 0; + // *** End programmer edit section *** (Медведь.ВычислимоеПоле Get) } set { - // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Set start) - - // *** End programmer edit section *** (Медведь.ПорядковыйНомер Set start) - this.fПорядковыйНомер = value; - // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Set end) + // *** Start programmer edit section *** (Медведь.ВычислимоеПоле Set) - // *** End programmer edit section *** (Медведь.ПорядковыйНомер Set end) + // *** End programmer edit section *** (Медведь.ВычислимоеПоле Set) } } - + /// - /// Вес. + /// ДатаРождения. /// - // *** Start programmer edit section *** (Медведь.Вес CustomAttributes) + // *** Start programmer edit section *** (Медведь.ДатаРождения CustomAttributes) - // *** End programmer edit section *** (Медведь.Вес CustomAttributes) - public virtual int Вес + // *** End programmer edit section *** (Медведь.ДатаРождения CustomAttributes) + public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРождения { get { - // *** Start programmer edit section *** (Медведь.Вес Get start) + // *** Start programmer edit section *** (Медведь.ДатаРождения Get start) - // *** End programmer edit section *** (Медведь.Вес Get start) - int result = this.fВес; - // *** Start programmer edit section *** (Медведь.Вес Get end) + // *** End programmer edit section *** (Медведь.ДатаРождения Get start) + ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаРождения; + // *** Start programmer edit section *** (Медведь.ДатаРождения Get end) - // *** End programmer edit section *** (Медведь.Вес Get end) + // *** End programmer edit section *** (Медведь.ДатаРождения Get end) return result; } set { - // *** Start programmer edit section *** (Медведь.Вес Set start) + // *** Start programmer edit section *** (Медведь.ДатаРождения Set start) - // *** End programmer edit section *** (Медведь.Вес Set start) - this.fВес = value; - // *** Start programmer edit section *** (Медведь.Вес Set end) + // *** End programmer edit section *** (Медведь.ДатаРождения Set start) + this.fДатаРождения = value; + // *** Start programmer edit section *** (Медведь.ДатаРождения Set end) - // *** End programmer edit section *** (Медведь.Вес Set end) + // *** End programmer edit section *** (Медведь.ДатаРождения Set end) } } - + /// - /// ЦветГлаз. + /// МедведьСтрокой. /// - // *** Start programmer edit section *** (Медведь.ЦветГлаз CustomAttributes) + // *** Start programmer edit section *** (Медведь.МедведьСтрокой CustomAttributes) - // *** End programmer edit section *** (Медведь.ЦветГлаз CustomAttributes) + // *** End programmer edit section *** (Медведь.МедведьСтрокой CustomAttributes) + [ICSSoft.STORMNET.NotStored()] [StrLen(255)] - public virtual string ЦветГлаз + [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.MSSQLDataService), "\'ПорядковыйНомер:\' + @ПорядковыйНомер@ + \", Цвет глаз мамы:\" + isnull(@Мама.ЦветГ" + + "лаз@,\'\')")] + [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.PostgresDataService), "\'ПорядковыйНомер:\' || @ПорядковыйНомер@ || \", Цвет глаз мамы:\" || coalesce(@Мама.ЦветГ" + + "лаз@,\'\')")] + public virtual string МедведьСтрокой { get { - // *** Start programmer edit section *** (Медведь.ЦветГлаз Get start) - - // *** End programmer edit section *** (Медведь.ЦветГлаз Get start) - string result = this.fЦветГлаз; - // *** Start programmer edit section *** (Медведь.ЦветГлаз Get end) - - // *** End programmer edit section *** (Медведь.ЦветГлаз Get end) - return result; + // *** Start programmer edit section *** (Медведь.МедведьСтрокой Get) + return null; + // *** End programmer edit section *** (Медведь.МедведьСтрокой Get) } set { - // *** Start programmer edit section *** (Медведь.ЦветГлаз Set start) - - // *** End programmer edit section *** (Медведь.ЦветГлаз Set start) - this.fЦветГлаз = value; - // *** Start programmer edit section *** (Медведь.ЦветГлаз Set end) + // *** Start programmer edit section *** (Медведь.МедведьСтрокой Set) - // *** End programmer edit section *** (Медведь.ЦветГлаз Set end) + // *** End programmer edit section *** (Медведь.МедведьСтрокой Set) } } - + /// /// Пол. /// @@ -284,90 +276,102 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.tПол Пол // *** End programmer edit section *** (Медведь.Пол Set end) } } - + /// - /// ДатаРождения. + /// ПолеБС. /// - // *** Start programmer edit section *** (Медведь.ДатаРождения CustomAttributes) + // *** Start programmer edit section *** (Медведь.ПолеБС CustomAttributes) - // *** End programmer edit section *** (Медведь.ДатаРождения CustomAttributes) - public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРождения + // *** End programmer edit section *** (Медведь.ПолеБС CustomAttributes) + [StrLen(255)] + public virtual string ПолеБС { get { - // *** Start programmer edit section *** (Медведь.ДатаРождения Get start) + // *** Start programmer edit section *** (Медведь.ПолеБС Get start) - // *** End programmer edit section *** (Медведь.ДатаРождения Get start) - ICSSoft.STORMNET.UserDataTypes.NullableDateTime result = this.fДатаРождения; - // *** Start programmer edit section *** (Медведь.ДатаРождения Get end) + // *** End programmer edit section *** (Медведь.ПолеБС Get start) + string result = this.fПолеБС; + // *** Start programmer edit section *** (Медведь.ПолеБС Get end) - // *** End programmer edit section *** (Медведь.ДатаРождения Get end) + // *** End programmer edit section *** (Медведь.ПолеБС Get end) return result; } set { - // *** Start programmer edit section *** (Медведь.ДатаРождения Set start) + // *** Start programmer edit section *** (Медведь.ПолеБС Set start) - // *** End programmer edit section *** (Медведь.ДатаРождения Set start) - this.fДатаРождения = value; - // *** Start programmer edit section *** (Медведь.ДатаРождения Set end) + // *** End programmer edit section *** (Медведь.ПолеБС Set start) + this.fПолеБС = value; + // *** Start programmer edit section *** (Медведь.ПолеБС Set end) - // *** End programmer edit section *** (Медведь.ДатаРождения Set end) + // *** End programmer edit section *** (Медведь.ПолеБС Set end) } } - + /// - /// МедведьСтрокой. + /// ПорядковыйНомер. /// - // *** Start programmer edit section *** (Медведь.МедведьСтрокой CustomAttributes) + // *** Start programmer edit section *** (Медведь.ПорядковыйНомер CustomAttributes) - // *** End programmer edit section *** (Медведь.МедведьСтрокой CustomAttributes) - [ICSSoft.STORMNET.NotStored()] - [StrLen(255)] - [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.MSSQLDataService), "\'ПорядковыйНомер:\' + @ПорядковыйНомер@ + \", Цвет глаз мамы:\" + isnull(@Мама.ЦветГ" + - "лаз@,\'\')")] - [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.PostgresDataService), "\'ПорядковыйНомер:\' || @ПорядковыйНомер@ || \", Цвет глаз мамы:\" || coalesce(@Мама.ЦветГ" + - "лаз@,\'\')")] - public virtual string МедведьСтрокой + // *** End programmer edit section *** (Медведь.ПорядковыйНомер CustomAttributes) + public virtual int ПорядковыйНомер { get { - // *** Start programmer edit section *** (Медведь.МедведьСтрокой Get) - return null; - // *** End programmer edit section *** (Медведь.МедведьСтрокой Get) + // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Get start) + + // *** End programmer edit section *** (Медведь.ПорядковыйНомер Get start) + int result = this.fПорядковыйНомер; + // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Get end) + + // *** End programmer edit section *** (Медведь.ПорядковыйНомер Get end) + return result; } set { - // *** Start programmer edit section *** (Медведь.МедведьСтрокой Set) + // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Set start) - // *** End programmer edit section *** (Медведь.МедведьСтрокой Set) + // *** End programmer edit section *** (Медведь.ПорядковыйНомер Set start) + this.fПорядковыйНомер = value; + // *** Start programmer edit section *** (Медведь.ПорядковыйНомер Set end) + + // *** End programmer edit section *** (Медведь.ПорядковыйНомер Set end) } } - + /// - /// ВычислимоеПоле. + /// ЦветГлаз. /// - // *** Start programmer edit section *** (Медведь.ВычислимоеПоле CustomAttributes) + // *** Start programmer edit section *** (Медведь.ЦветГлаз CustomAttributes) - // *** End programmer edit section *** (Медведь.ВычислимоеПоле CustomAttributes) - [ICSSoft.STORMNET.NotStored()] - [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.MSSQLDataService), "@ПорядковыйНомер@ + @Вес@")] - public virtual int ВычислимоеПоле + // *** End programmer edit section *** (Медведь.ЦветГлаз CustomAttributes) + [StrLen(255)] + public virtual string ЦветГлаз { get { - // *** Start programmer edit section *** (Медведь.ВычислимоеПоле Get) - return 0; - // *** End programmer edit section *** (Медведь.ВычислимоеПоле Get) + // *** Start programmer edit section *** (Медведь.ЦветГлаз Get start) + + // *** End programmer edit section *** (Медведь.ЦветГлаз Get start) + string result = this.fЦветГлаз; + // *** Start programmer edit section *** (Медведь.ЦветГлаз Get end) + + // *** End programmer edit section *** (Медведь.ЦветГлаз Get end) + return result; } set { - // *** Start programmer edit section *** (Медведь.ВычислимоеПоле Set) + // *** Start programmer edit section *** (Медведь.ЦветГлаз Set start) - // *** End programmer edit section *** (Медведь.ВычислимоеПоле Set) + // *** End programmer edit section *** (Медведь.ЦветГлаз Set start) + this.fЦветГлаз = value; + // *** Start programmer edit section *** (Медведь.ЦветГлаз Set end) + + // *** End programmer edit section *** (Медведь.ЦветГлаз Set end) } } - + /// /// Время создания объекта. /// @@ -398,7 +402,7 @@ public virtual System.Nullable CreateTime // *** End programmer edit section *** (Медведь.CreateTime Set end) } } - + /// /// Создатель объекта. /// @@ -430,38 +434,7 @@ public virtual string Creator // *** End programmer edit section *** (Медведь.Creator Set end) } } - - /// - /// Время последнего редактирования объекта. - /// - // *** Start programmer edit section *** (Медведь.EditTime CustomAttributes) - // *** End programmer edit section *** (Медведь.EditTime CustomAttributes) - public virtual System.Nullable EditTime - { - get - { - // *** Start programmer edit section *** (Медведь.EditTime Get start) - - // *** End programmer edit section *** (Медведь.EditTime Get start) - System.Nullable result = this.fEditTime; - // *** Start programmer edit section *** (Медведь.EditTime Get end) - - // *** End programmer edit section *** (Медведь.EditTime Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Медведь.EditTime Set start) - - // *** End programmer edit section *** (Медведь.EditTime Set start) - this.fEditTime = value; - // *** Start programmer edit section *** (Медведь.EditTime Set end) - - // *** End programmer edit section *** (Медведь.EditTime Set end) - } - } - /// /// Последний редактор объекта. /// @@ -493,7 +466,38 @@ public virtual string Editor // *** End programmer edit section *** (Медведь.Editor Set end) } } - + + /// + /// Время последнего редактирования объекта. + /// + // *** Start programmer edit section *** (Медведь.EditTime CustomAttributes) + + // *** End programmer edit section *** (Медведь.EditTime CustomAttributes) + public virtual System.Nullable EditTime + { + get + { + // *** Start programmer edit section *** (Медведь.EditTime Get start) + + // *** End programmer edit section *** (Медведь.EditTime Get start) + System.Nullable result = this.fEditTime; + // *** Start programmer edit section *** (Медведь.EditTime Get end) + + // *** End programmer edit section *** (Медведь.EditTime Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Медведь.EditTime Set start) + + // *** End programmer edit section *** (Медведь.EditTime Set start) + this.fEditTime = value; + // *** Start programmer edit section *** (Медведь.EditTime Set end) + + // *** End programmer edit section *** (Медведь.EditTime Set end) + } + } + /// /// Медведь ///Аудит включен для тестирования оффлайн-сервиса аудита в OData. @@ -527,7 +531,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Лес ЛесОби // *** End programmer edit section *** (Медведь.ЛесОбитания Set end) } } - + /// /// Медведь ///Аудит включен для тестирования оффлайн-сервиса аудита в OData. @@ -561,7 +565,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь Ма // *** End programmer edit section *** (Медведь.Мама Set end) } } - + /// /// Медведь ///Аудит включен для тестирования оффлайн-сервиса аудита в OData. @@ -595,7 +599,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь Па // *** End programmer edit section *** (Медведь.Папа Set end) } } - + /// /// Медведь ///Аудит включен для тестирования оффлайн-сервиса аудита в OData. @@ -629,7 +633,7 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Страна Стр // *** End programmer edit section *** (Медведь.СтранаРождения Set end) } } - + /// /// Медведь ///Аудит включен для тестирования оффлайн-сервиса аудита в OData. @@ -665,13 +669,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfБер // *** End programmer edit section *** (Медведь.Берлога Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// Представление для работы тестов на загрузку объектов. /// @@ -682,7 +686,7 @@ public static ICSSoft.STORMNET.View LoadTestView return ICSSoft.STORMNET.Information.GetView("LoadTestView", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь)); } } - + /// /// Представление для работы теста по использованию порядкового номера. /// @@ -693,7 +697,7 @@ public static ICSSoft.STORMNET.View OrderNumberTest return ICSSoft.STORMNET.Information.GetView("OrderNumberTest", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь)); } } - + /// /// "МедведьE" view. /// @@ -704,7 +708,7 @@ public static ICSSoft.STORMNET.View МедведьE return ICSSoft.STORMNET.Information.GetView("МедведьE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь)); } } - + /// /// "МедведьL" view. /// @@ -715,7 +719,7 @@ public static ICSSoft.STORMNET.View МедведьL return ICSSoft.STORMNET.Information.GetView("МедведьL", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь)); } } - + /// /// "МедведьShort" view. /// @@ -726,7 +730,18 @@ public static ICSSoft.STORMNET.View МедведьShort return ICSSoft.STORMNET.Information.GetView("МедведьShort", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь)); } } - + + /// + /// Представление для тестов UpdateView (без мастеров и детейлов). + /// + public static ICSSoft.STORMNET.View МедведьUpdateView + { + get + { + return ICSSoft.STORMNET.Information.GetView("МедведьUpdateView", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Медведь)); + } + } + /// /// "МедведьСДелейломИВычислимымСвойством" view. /// @@ -738,93 +753,93 @@ public static ICSSoft.STORMNET.View МедведьСДелейломИВычис } } } - + /// /// Audit class settings. /// public class AuditSettings { - + /// /// Включён ли аудит для класса. /// public static bool AuditEnabled = true; - + /// /// Использовать имя представления для аудита по умолчанию. /// public static bool UseDefaultView = true; - + /// /// Включён ли аудит операции чтения. /// public static bool SelectAudit = true; - + /// /// Имя представления для аудирования операции чтения. /// public static string SelectAuditViewName = "AuditView"; - + /// /// Включён ли аудит операции создания. /// public static bool InsertAudit = true; - + /// /// Имя представления для аудирования операции создания. /// public static string InsertAuditViewName = "AuditView"; - + /// /// Включён ли аудит операции изменения. /// public static bool UpdateAudit = true; - + /// /// Имя представления для аудирования операции изменения. /// public static string UpdateAuditViewName = "AuditView"; - + /// /// Включён ли аудит операции удаления. /// public static bool DeleteAudit = true; - + /// /// Имя представления для аудирования операции удаления. /// public static string DeleteAuditViewName = "AuditView"; - + /// /// Путь к форме просмотра результатов аудита. /// public static string FormUrl = ""; - + /// /// Режим записи данных аудита (синхронный или асинхронный). /// public static ICSSoft.STORMNET.Business.Audit.Objects.tWriteMode WriteMode = ICSSoft.STORMNET.Business.Audit.Objects.tWriteMode.Synchronous; - + /// /// Максимальная длина сохраняемого значения поля (если 0, то строка обрезаться не будет). /// public static int PrunningLength = 0; - + /// /// Показывать ли пользователям в изменениях первичные ключи. /// public static bool ShowPrimaryKey = false; - + /// /// Сохранять ли старое значение. /// public static bool KeepOldValue = true; - + /// /// Сжимать ли сохраняемые значения. /// public static bool Compress = false; - + /// /// Сохранять ли все значения атрибутов, а не только изменяемые. /// @@ -832,3 +847,4 @@ public class AuditSettings } } } + diff --git "a/Tests/Objects/\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" "b/Tests/Objects/\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" index b0c5d049..39ec90e3 100644 --- "a/Tests/Objects/\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" +++ "b/Tests/Objects/\320\235\320\260\321\201\320\273\320\265\320\264\320\275\320\270\320\272.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -30,18 +27,18 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests [AccessType(ICSSoft.STORMNET.AccessType.none)] public class Наследник : NewPlatform.Flexberry.ORM.ODataService.Tests.БазовыйКласс { - + private double fСвойство; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Master fMaster; - + private NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер fМастер; - + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Master fMaster; + // *** Start programmer edit section *** (Наследник CustomMembers) // *** End programmer edit section *** (Наследник CustomMembers) - + /// /// Свойство. /// @@ -72,71 +69,72 @@ public virtual double Свойство // *** End programmer edit section *** (Наследник.Свойство Set end) } } - + /// /// Наследник. /// - // *** Start programmer edit section *** (Наследник.Master CustomAttributes) - - // *** End programmer edit section *** (Наследник.Master CustomAttributes) + // *** Start programmer edit section *** (Наследник.Мастер CustomAttributes) + [PublishName("MasterAlias")] + // *** End programmer edit section *** (Наследник.Мастер CustomAttributes) [PropertyStorage(new string[] { - "Master"})] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Master Master + "Мастер"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер Мастер { get { - // *** Start programmer edit section *** (Наследник.Master Get start) + // *** Start programmer edit section *** (Наследник.Мастер Get start) - // *** End programmer edit section *** (Наследник.Master Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Master result = this.fMaster; - // *** Start programmer edit section *** (Наследник.Master Get end) + // *** End programmer edit section *** (Наследник.Мастер Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер result = this.fМастер; + // *** Start programmer edit section *** (Наследник.Мастер Get end) - // *** End programmer edit section *** (Наследник.Master Get end) + // *** End programmer edit section *** (Наследник.Мастер Get end) return result; } set { - // *** Start programmer edit section *** (Наследник.Master Set start) + // *** Start programmer edit section *** (Наследник.Мастер Set start) - // *** End programmer edit section *** (Наследник.Master Set start) - this.fMaster = value; - // *** Start programmer edit section *** (Наследник.Master Set end) + // *** End programmer edit section *** (Наследник.Мастер Set start) + this.fМастер = value; + // *** Start programmer edit section *** (Наследник.Мастер Set end) - // *** End programmer edit section *** (Наследник.Master Set end) + // *** End programmer edit section *** (Наследник.Мастер Set end) } } - + /// /// Наследник. /// - // *** Start programmer edit section *** (Наследник.Мастер CustomAttributes) - [PublishName("MasterAlias")] - // *** End programmer edit section *** (Наследник.Мастер CustomAttributes) + // *** Start programmer edit section *** (Наследник.Master CustomAttributes) + + // *** End programmer edit section *** (Наследник.Master CustomAttributes) [PropertyStorage(new string[] { - "Мастер"})] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер Мастер + "Master"})] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Master Master { get { - // *** Start programmer edit section *** (Наследник.Мастер Get start) + // *** Start programmer edit section *** (Наследник.Master Get start) - // *** End programmer edit section *** (Наследник.Мастер Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Мастер result = this.fМастер; - // *** Start programmer edit section *** (Наследник.Мастер Get end) + // *** End programmer edit section *** (Наследник.Master Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Master result = this.fMaster; + // *** Start programmer edit section *** (Наследник.Master Get end) - // *** End programmer edit section *** (Наследник.Мастер Get end) + // *** End programmer edit section *** (Наследник.Master Get end) return result; } set { - // *** Start programmer edit section *** (Наследник.Мастер Set start) + // *** Start programmer edit section *** (Наследник.Master Set start) - // *** End programmer edit section *** (Наследник.Мастер Set start) - this.fМастер = value; - // *** Start programmer edit section *** (Наследник.Мастер Set end) + // *** End programmer edit section *** (Наследник.Master Set start) + this.fMaster = value; + // *** Start programmer edit section *** (Наследник.Master Set end) - // *** End programmer edit section *** (Наследник.Мастер Set end) + // *** End programmer edit section *** (Наследник.Master Set end) } } } } + diff --git "a/Tests/Objects/\320\237\320\265\321\200\320\265\320\273\320\276\320\274.cs" "b/Tests/Objects/\320\237\320\265\321\200\320\265\320\273\320\276\320\274.cs" index a135a95b..20f27741 100644 --- "a/Tests/Objects/\320\237\320\265\321\200\320\265\320\273\320\276\320\274.cs" +++ "b/Tests/Objects/\320\237\320\265\321\200\320\265\320\273\320\276\320\274.cs" @@ -1,185 +1,183 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET.Business; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Перелом. - /// - // *** Start programmer edit section *** (Перелом CustomAttributes) - - // *** End programmer edit section *** (Перелом CustomAttributes) - [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.CatsBS, NewPlatform.Flexberry.ORM.OD" + - "ataService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class Перелом : ICSSoft.STORMNET.DataObject - { - - private System.DateTime fДата; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПерелома fТип; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа fЛапа; - - // *** Start programmer edit section *** (Перелом CustomMembers) - - // *** End programmer edit section *** (Перелом CustomMembers) - - - /// - /// Дата. - /// - // *** Start programmer edit section *** (Перелом.Дата CustomAttributes) - - // *** End programmer edit section *** (Перелом.Дата CustomAttributes) - public virtual System.DateTime Дата - { - get - { - // *** Start programmer edit section *** (Перелом.Дата Get start) - - // *** End programmer edit section *** (Перелом.Дата Get start) - System.DateTime result = this.fДата; - // *** Start programmer edit section *** (Перелом.Дата Get end) - - // *** End programmer edit section *** (Перелом.Дата Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Перелом.Дата Set start) - - // *** End programmer edit section *** (Перелом.Дата Set start) - this.fДата = value; - // *** Start programmer edit section *** (Перелом.Дата Set end) - - // *** End programmer edit section *** (Перелом.Дата Set end) - } - } - - /// - /// Тип. - /// - // *** Start programmer edit section *** (Перелом.Тип CustomAttributes) - - // *** End programmer edit section *** (Перелом.Тип CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПерелома Тип - { - get - { - // *** Start programmer edit section *** (Перелом.Тип Get start) - - // *** End programmer edit section *** (Перелом.Тип Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПерелома result = this.fТип; - // *** Start programmer edit section *** (Перелом.Тип Get end) - - // *** End programmer edit section *** (Перелом.Тип Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Перелом.Тип Set start) - - // *** End programmer edit section *** (Перелом.Тип Set start) - this.fТип = value; - // *** Start programmer edit section *** (Перелом.Тип Set end) - - // *** End programmer edit section *** (Перелом.Тип Set end) - } - } - - /// - /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа. - /// - // *** Start programmer edit section *** (Перелом.Лапа CustomAttributes) - - // *** End programmer edit section *** (Перелом.Лапа CustomAttributes) - [Agregator()] - [NotNull()] - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа Лапа - { - get - { - // *** Start programmer edit section *** (Перелом.Лапа Get start) - - // *** End programmer edit section *** (Перелом.Лапа Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа result = this.fЛапа; - // *** Start programmer edit section *** (Перелом.Лапа Get end) - - // *** End programmer edit section *** (Перелом.Лапа Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Перелом.Лапа Set start) - - // *** End programmer edit section *** (Перелом.Лапа Set start) - this.fЛапа = value; - // *** Start programmer edit section *** (Перелом.Лапа Set end) - - // *** End programmer edit section *** (Перелом.Лапа Set end) - } - } - } - - /// - /// Detail array of Перелом. - /// - // *** Start programmer edit section *** (DetailArrayDetailArrayOfПерелом CustomAttributes) - - // *** End programmer edit section *** (DetailArrayDetailArrayOfПерелом CustomAttributes) - public class DetailArrayOfПерелом : ICSSoft.STORMNET.DetailArray - { - - // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом members) - - // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом members) - - - /// - /// Construct detail array. - /// - /// - /// Returns object with type Перелом by index. - /// - /// - /// Adds object with type Перелом. - /// - public DetailArrayOfПерелом(NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа fЛапа) : - base(typeof(Перелом), ((ICSSoft.STORMNET.DataObject)(fЛапа))) - { - } - - public NewPlatform.Flexberry.ORM.ODataService.Tests.Перелом this[int index] - { - get - { - return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Перелом)(this.ItemByIndex(index))); - } - } - - public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Перелом dataobject) - { - this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET.Business; + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Перелом. + /// + // *** Start programmer edit section *** (Перелом CustomAttributes) + + // *** End programmer edit section *** (Перелом CustomAttributes) + [BusinessServer("NewPlatform.Flexberry.ORM.ODataService.Tests.CatsBS, NewPlatform.Flexberry.ORM.OD" + + "ataService.Tests.BusinessServers", ICSSoft.STORMNET.Business.DataServiceObjectEvents.OnAllEvents)] + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class Перелом : ICSSoft.STORMNET.DataObject + { + + private System.DateTime fДата; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПерелома fТип; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа fЛапа; + + // *** Start programmer edit section *** (Перелом CustomMembers) + + // *** End programmer edit section *** (Перелом CustomMembers) + + + /// + /// Дата. + /// + // *** Start programmer edit section *** (Перелом.Дата CustomAttributes) + + // *** End programmer edit section *** (Перелом.Дата CustomAttributes) + public virtual System.DateTime Дата + { + get + { + // *** Start programmer edit section *** (Перелом.Дата Get start) + + // *** End programmer edit section *** (Перелом.Дата Get start) + System.DateTime result = this.fДата; + // *** Start programmer edit section *** (Перелом.Дата Get end) + + // *** End programmer edit section *** (Перелом.Дата Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Перелом.Дата Set start) + + // *** End programmer edit section *** (Перелом.Дата Set start) + this.fДата = value; + // *** Start programmer edit section *** (Перелом.Дата Set end) + + // *** End programmer edit section *** (Перелом.Дата Set end) + } + } + + /// + /// Тип. + /// + // *** Start programmer edit section *** (Перелом.Тип CustomAttributes) + + // *** End programmer edit section *** (Перелом.Тип CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПерелома Тип + { + get + { + // *** Start programmer edit section *** (Перелом.Тип Get start) + + // *** End programmer edit section *** (Перелом.Тип Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПерелома result = this.fТип; + // *** Start programmer edit section *** (Перелом.Тип Get end) + + // *** End programmer edit section *** (Перелом.Тип Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Перелом.Тип Set start) + + // *** End programmer edit section *** (Перелом.Тип Set start) + this.fТип = value; + // *** Start programmer edit section *** (Перелом.Тип Set end) + + // *** End programmer edit section *** (Перелом.Тип Set end) + } + } + + /// + /// мастеровая ссылка на шапку NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа. + /// + // *** Start programmer edit section *** (Перелом.Лапа CustomAttributes) + + // *** End programmer edit section *** (Перелом.Лапа CustomAttributes) + [Agregator()] + [NotNull()] + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа Лапа + { + get + { + // *** Start programmer edit section *** (Перелом.Лапа Get start) + + // *** End programmer edit section *** (Перелом.Лапа Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа result = this.fЛапа; + // *** Start programmer edit section *** (Перелом.Лапа Get end) + + // *** End programmer edit section *** (Перелом.Лапа Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Перелом.Лапа Set start) + + // *** End programmer edit section *** (Перелом.Лапа Set start) + this.fЛапа = value; + // *** Start programmer edit section *** (Перелом.Лапа Set end) + + // *** End programmer edit section *** (Перелом.Лапа Set end) + } + } + } + + /// + /// Detail array of Перелом. + /// + // *** Start programmer edit section *** (DetailArrayDetailArrayOfПерелом CustomAttributes) + + // *** End programmer edit section *** (DetailArrayDetailArrayOfПерелом CustomAttributes) + public class DetailArrayOfПерелом : ICSSoft.STORMNET.DetailArray + { + + // *** Start programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом members) + + // *** End programmer edit section *** (NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfПерелом members) + + + /// + /// Construct detail array. + /// + /// + /// Returns object with type Перелом by index. + /// + /// + /// Adds object with type Перелом. + /// + public DetailArrayOfПерелом(NewPlatform.Flexberry.ORM.ODataService.Tests.Лапа fЛапа) : + base(typeof(Перелом), ((ICSSoft.STORMNET.DataObject)(fЛапа))) + { + } + + public NewPlatform.Flexberry.ORM.ODataService.Tests.Перелом this[int index] + { + get + { + return ((NewPlatform.Flexberry.ORM.ODataService.Tests.Перелом)(this.ItemByIndex(index))); + } + } + + public virtual void Add(NewPlatform.Flexberry.ORM.ODataService.Tests.Перелом dataobject) + { + this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); + } + } +} + diff --git "a/Tests/Objects/\320\237\320\276\321\200\320\276\320\264\320\260.cs" "b/Tests/Objects/\320\237\320\276\321\200\320\276\320\264\320\260.cs" index 17b9a647..91cff119 100644 --- "a/Tests/Objects/\320\237\320\276\321\200\320\276\320\264\320\260.cs" +++ "b/Tests/Objects/\320\237\320\276\321\200\320\276\320\264\320\260.cs" @@ -1,165 +1,163 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Порода. - /// - // *** Start programmer edit section *** (Порода CustomAttributes) - - // *** End programmer edit section *** (Порода CustomAttributes) - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - [View("ПородаE", new string[] { - "Название", - "ТипПороды", - "ТипПороды.Название", - "Иерархия", - "Иерархия.Название"}, Hidden=new string[] { - "ТипПороды", - "Иерархия"})] - public class Порода : ICSSoft.STORMNET.DataObject - { - - private string fНазвание; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.Порода fИерархия; - - private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПороды fТипПороды; - - // *** Start programmer edit section *** (Порода CustomMembers) - - // *** End programmer edit section *** (Порода CustomMembers) - - - /// - /// Название. - /// - // *** Start programmer edit section *** (Порода.Название CustomAttributes) - - // *** End programmer edit section *** (Порода.Название CustomAttributes) - [StrLen(255)] - public virtual string Название - { - get - { - // *** Start programmer edit section *** (Порода.Название Get start) - - // *** End programmer edit section *** (Порода.Название Get start) - string result = this.fНазвание; - // *** Start programmer edit section *** (Порода.Название Get end) - - // *** End programmer edit section *** (Порода.Название Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Порода.Название Set start) - - // *** End programmer edit section *** (Порода.Название Set start) - this.fНазвание = value; - // *** Start programmer edit section *** (Порода.Название Set end) - - // *** End programmer edit section *** (Порода.Название Set end) - } - } - - /// - /// Порода. - /// - // *** Start programmer edit section *** (Порода.Иерархия CustomAttributes) - - // *** End programmer edit section *** (Порода.Иерархия CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Порода Иерархия - { - get - { - // *** Start programmer edit section *** (Порода.Иерархия Get start) - - // *** End programmer edit section *** (Порода.Иерархия Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.Порода result = this.fИерархия; - // *** Start programmer edit section *** (Порода.Иерархия Get end) - - // *** End programmer edit section *** (Порода.Иерархия Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Порода.Иерархия Set start) - - // *** End programmer edit section *** (Порода.Иерархия Set start) - this.fИерархия = value; - // *** Start programmer edit section *** (Порода.Иерархия Set end) - - // *** End programmer edit section *** (Порода.Иерархия Set end) - } - } - - /// - /// Порода. - /// - // *** Start programmer edit section *** (Порода.ТипПороды CustomAttributes) - - // *** End programmer edit section *** (Порода.ТипПороды CustomAttributes) - public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПороды ТипПороды - { - get - { - // *** Start programmer edit section *** (Порода.ТипПороды Get start) - - // *** End programmer edit section *** (Порода.ТипПороды Get start) - NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПороды result = this.fТипПороды; - // *** Start programmer edit section *** (Порода.ТипПороды Get end) - - // *** End programmer edit section *** (Порода.ТипПороды Get end) - return result; - } - set - { - // *** Start programmer edit section *** (Порода.ТипПороды Set start) - - // *** End programmer edit section *** (Порода.ТипПороды Set start) - this.fТипПороды = value; - // *** Start programmer edit section *** (Порода.ТипПороды Set end) - - // *** End programmer edit section *** (Порода.ТипПороды Set end) - } - } - - /// - /// Class views container. - /// - public class Views - { - - /// - /// "ПородаE" view. - /// - public static ICSSoft.STORMNET.View ПородаE - { - get - { - return ICSSoft.STORMNET.Information.GetView("ПородаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Порода)); - } - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Порода. + /// + // *** Start programmer edit section *** (Порода CustomAttributes) + + // *** End programmer edit section *** (Порода CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + [View("ПородаE", new string[] { + "Название", + "ТипПороды", + "ТипПороды.Название", + "Иерархия", + "Иерархия.Название"}, Hidden=new string[] { + "ТипПороды", + "Иерархия"})] + public class Порода : ICSSoft.STORMNET.DataObject + { + + private string fНазвание; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.Порода fИерархия; + + private NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПороды fТипПороды; + + // *** Start programmer edit section *** (Порода CustomMembers) + + // *** End programmer edit section *** (Порода CustomMembers) + + + /// + /// Название. + /// + // *** Start programmer edit section *** (Порода.Название CustomAttributes) + + // *** End programmer edit section *** (Порода.Название CustomAttributes) + [StrLen(255)] + public virtual string Название + { + get + { + // *** Start programmer edit section *** (Порода.Название Get start) + + // *** End programmer edit section *** (Порода.Название Get start) + string result = this.fНазвание; + // *** Start programmer edit section *** (Порода.Название Get end) + + // *** End programmer edit section *** (Порода.Название Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Порода.Название Set start) + + // *** End programmer edit section *** (Порода.Название Set start) + this.fНазвание = value; + // *** Start programmer edit section *** (Порода.Название Set end) + + // *** End programmer edit section *** (Порода.Название Set end) + } + } + + /// + /// Порода. + /// + // *** Start programmer edit section *** (Порода.Иерархия CustomAttributes) + + // *** End programmer edit section *** (Порода.Иерархия CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Порода Иерархия + { + get + { + // *** Start programmer edit section *** (Порода.Иерархия Get start) + + // *** End programmer edit section *** (Порода.Иерархия Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.Порода result = this.fИерархия; + // *** Start programmer edit section *** (Порода.Иерархия Get end) + + // *** End programmer edit section *** (Порода.Иерархия Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Порода.Иерархия Set start) + + // *** End programmer edit section *** (Порода.Иерархия Set start) + this.fИерархия = value; + // *** Start programmer edit section *** (Порода.Иерархия Set end) + + // *** End programmer edit section *** (Порода.Иерархия Set end) + } + } + + /// + /// Порода. + /// + // *** Start programmer edit section *** (Порода.ТипПороды CustomAttributes) + + // *** End programmer edit section *** (Порода.ТипПороды CustomAttributes) + public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПороды ТипПороды + { + get + { + // *** Start programmer edit section *** (Порода.ТипПороды Get start) + + // *** End programmer edit section *** (Порода.ТипПороды Get start) + NewPlatform.Flexberry.ORM.ODataService.Tests.ТипПороды result = this.fТипПороды; + // *** Start programmer edit section *** (Порода.ТипПороды Get end) + + // *** End programmer edit section *** (Порода.ТипПороды Get end) + return result; + } + set + { + // *** Start programmer edit section *** (Порода.ТипПороды Set start) + + // *** End programmer edit section *** (Порода.ТипПороды Set start) + this.fТипПороды = value; + // *** Start programmer edit section *** (Порода.ТипПороды Set end) + + // *** End programmer edit section *** (Порода.ТипПороды Set end) + } + } + + /// + /// Class views container. + /// + public class Views + { + + /// + /// "ПородаE" view. + /// + public static ICSSoft.STORMNET.View ПородаE + { + get + { + return ICSSoft.STORMNET.Information.GetView("ПородаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Порода)); + } + } + } + } +} + diff --git "a/Tests/Objects/\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\232\320\275\320\270\320\263.cs" "b/Tests/Objects/\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\232\320\275\320\270\320\263.cs" index 7923774c..02ddda3e 100644 --- "a/Tests/Objects/\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\232\320\275\320\270\320\263.cs" +++ "b/Tests/Objects/\320\237\320\276\321\201\321\202\320\260\320\262\321\211\320\270\320\272\320\232\320\275\320\270\320\263.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -35,14 +32,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Мастер as \'Мастер\'"})] public class ПоставщикКниг : ICSSoft.STORMNET.DataObject { - + private System.Guid fСсылка; - + // *** Start programmer edit section *** (ПоставщикКниг CustomMembers) // *** End programmer edit section *** (ПоставщикКниг CustomMembers) - + /// /// Ссылка. /// @@ -73,7 +70,7 @@ public virtual System.Guid Ссылка // *** End programmer edit section *** (ПоставщикКниг.Ссылка Set end) } } - + /// /// ПоставщикКниг. /// @@ -99,13 +96,13 @@ public virtual NewPlatform.Flexberry.ORM.ODataService.Tests.Библиотека // *** End programmer edit section *** (ПоставщикКниг.Мастер Set) } } - + /// /// Class views container. /// public class Views { - + /// /// "View" view. /// @@ -116,7 +113,7 @@ public static ICSSoft.STORMNET.View View return ICSSoft.STORMNET.Information.GetView("View", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.ПоставщикКниг)); } } - + /// /// "ViewFull" view. /// @@ -130,3 +127,4 @@ public static ICSSoft.STORMNET.View ViewFull } } } + diff --git "a/Tests/Objects/\320\241\321\202\320\276\321\200\320\276\320\275\320\260.cs" "b/Tests/Objects/\320\241\321\202\320\276\321\200\320\276\320\275\320\260.cs" index ab8e7b07..a26bb57d 100644 --- "a/Tests/Objects/\320\241\321\202\320\276\321\200\320\276\320\275\320\260.cs" +++ "b/Tests/Objects/\320\241\321\202\320\276\321\200\320\276\320\275\320\260.cs" @@ -1,46 +1,44 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// Сторона. - /// - // *** Start programmer edit section *** (Сторона CustomAttributes) - - // *** End programmer edit section *** (Сторона CustomAttributes) - public enum Сторона - { - - // *** Start programmer edit section *** (Сторона.НетЗначения CustomAttributes) - - // *** End programmer edit section *** (Сторона.НетЗначения CustomAttributes) - НетЗначения, - - // *** Start programmer edit section *** (Сторона.Левая CustomAttributes) - - // *** End programmer edit section *** (Сторона.Левая CustomAttributes) - Левая, - - // *** Start programmer edit section *** (Сторона.Правая CustomAttributes) - - // *** End programmer edit section *** (Сторона.Правая CustomAttributes) - Правая, - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// Сторона. + /// + // *** Start programmer edit section *** (Сторона CustomAttributes) + + // *** End programmer edit section *** (Сторона CustomAttributes) + public enum Сторона + { + + // *** Start programmer edit section *** (Сторона.НетЗначения CustomAttributes) + + // *** End programmer edit section *** (Сторона.НетЗначения CustomAttributes) + НетЗначения, + + // *** Start programmer edit section *** (Сторона.Левая CustomAttributes) + + // *** End programmer edit section *** (Сторона.Левая CustomAttributes) + Левая, + + // *** Start programmer edit section *** (Сторона.Правая CustomAttributes) + + // *** End programmer edit section *** (Сторона.Правая CustomAttributes) + Правая, + } +} + diff --git "a/Tests/Objects/\320\241\321\202\321\200\320\260\320\275\320\260.cs" "b/Tests/Objects/\320\241\321\202\321\200\320\260\320\275\320\260.cs" index 5d5fdeec..d4ffa08b 100644 --- "a/Tests/Objects/\320\241\321\202\321\200\320\260\320\275\320\260.cs" +++ "b/Tests/Objects/\320\241\321\202\321\200\320\260\320\275\320\260.cs" @@ -1,20 +1,17 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; using ICSSoft.STORMNET; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -34,14 +31,14 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests "Название as \'Название\'"})] public class Страна : ICSSoft.STORMNET.DataObject { - + private string fНазвание; - + // *** Start programmer edit section *** (Страна CustomMembers) // *** End programmer edit section *** (Страна CustomMembers) - + /// /// Название. /// @@ -73,13 +70,13 @@ public virtual string Название // *** End programmer edit section *** (Страна.Название Set end) } } - + /// /// Class views container. /// public class Views { - + /// /// "СтранаE" view. /// @@ -90,7 +87,7 @@ public static ICSSoft.STORMNET.View СтранаE return ICSSoft.STORMNET.Information.GetView("СтранаE", typeof(NewPlatform.Flexberry.ORM.ODataService.Tests.Страна)); } } - + /// /// "СтранаL" view. /// @@ -104,3 +101,4 @@ public static ICSSoft.STORMNET.View СтранаL } } } + diff --git "a/Tests/Objects/\320\242\320\270\320\277\320\232\320\276\321\210\320\272\320\270.cs" "b/Tests/Objects/\320\242\320\270\320\277\320\232\320\276\321\210\320\272\320\270.cs" index e4567d95..c6f6a7c8 100644 --- "a/Tests/Objects/\320\242\320\270\320\277\320\232\320\276\321\210\320\272\320\270.cs" +++ "b/Tests/Objects/\320\242\320\270\320\277\320\232\320\276\321\210\320\272\320\270.cs" @@ -1,46 +1,44 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// ТипКошки. - /// - // *** Start programmer edit section *** (ТипКошки CustomAttributes) - - // *** End programmer edit section *** (ТипКошки CustomAttributes) - public enum ТипКошки - { - - // *** Start programmer edit section *** (ТипКошки.НетЗначения CustomAttributes) - - // *** End programmer edit section *** (ТипКошки.НетЗначения CustomAttributes) - НетЗначения, - - // *** Start programmer edit section *** (ТипКошки.Дикая CustomAttributes) - - // *** End programmer edit section *** (ТипКошки.Дикая CustomAttributes) - Дикая, - - // *** Start programmer edit section *** (ТипКошки.Домашняя CustomAttributes) - - // *** End programmer edit section *** (ТипКошки.Домашняя CustomAttributes) - Домашняя, - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// ТипКошки. + /// + // *** Start programmer edit section *** (ТипКошки CustomAttributes) + + // *** End programmer edit section *** (ТипКошки CustomAttributes) + public enum ТипКошки + { + + // *** Start programmer edit section *** (ТипКошки.НетЗначения CustomAttributes) + + // *** End programmer edit section *** (ТипКошки.НетЗначения CustomAttributes) + НетЗначения, + + // *** Start programmer edit section *** (ТипКошки.Дикая CustomAttributes) + + // *** End programmer edit section *** (ТипКошки.Дикая CustomAttributes) + Дикая, + + // *** Start programmer edit section *** (ТипКошки.Домашняя CustomAttributes) + + // *** End programmer edit section *** (ТипКошки.Домашняя CustomAttributes) + Домашняя, + } +} + diff --git "a/Tests/Objects/\320\242\320\270\320\277\320\233\320\260\320\277\321\213.cs" "b/Tests/Objects/\320\242\320\270\320\277\320\233\320\260\320\277\321\213.cs" index f5977b04..8a958583 100644 --- "a/Tests/Objects/\320\242\320\270\320\277\320\233\320\260\320\277\321\213.cs" +++ "b/Tests/Objects/\320\242\320\270\320\277\320\233\320\260\320\277\321\213.cs" @@ -1,106 +1,104 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// ТипЛапы. - /// - // *** Start programmer edit section *** (ТипЛапы CustomAttributes) - - // *** End programmer edit section *** (ТипЛапы CustomAttributes) - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class ТипЛапы : ICSSoft.STORMNET.DataObject - { - - private string fНазвание; - - private bool fАктуально; - - // *** Start programmer edit section *** (ТипЛапы CustomMembers) - - // *** End programmer edit section *** (ТипЛапы CustomMembers) - - - /// - /// Название. - /// - // *** Start programmer edit section *** (ТипЛапы.Название CustomAttributes) - - // *** End programmer edit section *** (ТипЛапы.Название CustomAttributes) - [StrLen(255)] - public virtual string Название - { - get - { - // *** Start programmer edit section *** (ТипЛапы.Название Get start) - - // *** End programmer edit section *** (ТипЛапы.Название Get start) - string result = this.fНазвание; - // *** Start programmer edit section *** (ТипЛапы.Название Get end) - - // *** End programmer edit section *** (ТипЛапы.Название Get end) - return result; - } - set - { - // *** Start programmer edit section *** (ТипЛапы.Название Set start) - - // *** End programmer edit section *** (ТипЛапы.Название Set start) - this.fНазвание = value; - // *** Start programmer edit section *** (ТипЛапы.Название Set end) - - // *** End programmer edit section *** (ТипЛапы.Название Set end) - } - } - - /// - /// Актуально. - /// - // *** Start programmer edit section *** (ТипЛапы.Актуально CustomAttributes) - - // *** End programmer edit section *** (ТипЛапы.Актуально CustomAttributes) - public virtual bool Актуально - { - get - { - // *** Start programmer edit section *** (ТипЛапы.Актуально Get start) - - // *** End programmer edit section *** (ТипЛапы.Актуально Get start) - bool result = this.fАктуально; - // *** Start programmer edit section *** (ТипЛапы.Актуально Get end) - - // *** End programmer edit section *** (ТипЛапы.Актуально Get end) - return result; - } - set - { - // *** Start programmer edit section *** (ТипЛапы.Актуально Set start) - - // *** End programmer edit section *** (ТипЛапы.Актуально Set start) - this.fАктуально = value; - // *** Start programmer edit section *** (ТипЛапы.Актуально Set end) - - // *** End programmer edit section *** (ТипЛапы.Актуально Set end) - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// ТипЛапы. + /// + // *** Start programmer edit section *** (ТипЛапы CustomAttributes) + + // *** End programmer edit section *** (ТипЛапы CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class ТипЛапы : ICSSoft.STORMNET.DataObject + { + + private bool fАктуально; + + private string fНазвание; + + // *** Start programmer edit section *** (ТипЛапы CustomMembers) + + // *** End programmer edit section *** (ТипЛапы CustomMembers) + + + /// + /// Актуально. + /// + // *** Start programmer edit section *** (ТипЛапы.Актуально CustomAttributes) + + // *** End programmer edit section *** (ТипЛапы.Актуально CustomAttributes) + public virtual bool Актуально + { + get + { + // *** Start programmer edit section *** (ТипЛапы.Актуально Get start) + + // *** End programmer edit section *** (ТипЛапы.Актуально Get start) + bool result = this.fАктуально; + // *** Start programmer edit section *** (ТипЛапы.Актуально Get end) + + // *** End programmer edit section *** (ТипЛапы.Актуально Get end) + return result; + } + set + { + // *** Start programmer edit section *** (ТипЛапы.Актуально Set start) + + // *** End programmer edit section *** (ТипЛапы.Актуально Set start) + this.fАктуально = value; + // *** Start programmer edit section *** (ТипЛапы.Актуально Set end) + + // *** End programmer edit section *** (ТипЛапы.Актуально Set end) + } + } + + /// + /// Название. + /// + // *** Start programmer edit section *** (ТипЛапы.Название CustomAttributes) + + // *** End programmer edit section *** (ТипЛапы.Название CustomAttributes) + [StrLen(255)] + public virtual string Название + { + get + { + // *** Start programmer edit section *** (ТипЛапы.Название Get start) + + // *** End programmer edit section *** (ТипЛапы.Название Get start) + string result = this.fНазвание; + // *** Start programmer edit section *** (ТипЛапы.Название Get end) + + // *** End programmer edit section *** (ТипЛапы.Название Get end) + return result; + } + set + { + // *** Start programmer edit section *** (ТипЛапы.Название Set start) + + // *** End programmer edit section *** (ТипЛапы.Название Set start) + this.fНазвание = value; + // *** Start programmer edit section *** (ТипЛапы.Название Set end) + + // *** End programmer edit section *** (ТипЛапы.Название Set end) + } + } + } +} + diff --git "a/Tests/Objects/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\320\273\320\276\320\274\320\260.cs" "b/Tests/Objects/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\320\273\320\276\320\274\320\260.cs" index c101a941..aca53710 100644 --- "a/Tests/Objects/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\320\273\320\276\320\274\320\260.cs" +++ "b/Tests/Objects/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\320\273\320\276\320\274\320\260.cs" @@ -1,41 +1,39 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// ТипПерелома. - /// - // *** Start programmer edit section *** (ТипПерелома CustomAttributes) - - // *** End programmer edit section *** (ТипПерелома CustomAttributes) - public enum ТипПерелома - { - - // *** Start programmer edit section *** (ТипПерелома.Открытый CustomAttributes) - - // *** End programmer edit section *** (ТипПерелома.Открытый CustomAttributes) - Открытый, - - // *** Start programmer edit section *** (ТипПерелома.Закрытый CustomAttributes) - - // *** End programmer edit section *** (ТипПерелома.Закрытый CustomAttributes) - Закрытый, - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// ТипПерелома. + /// + // *** Start programmer edit section *** (ТипПерелома CustomAttributes) + + // *** End programmer edit section *** (ТипПерелома CustomAttributes) + public enum ТипПерелома + { + + // *** Start programmer edit section *** (ТипПерелома.Открытый CustomAttributes) + + // *** End programmer edit section *** (ТипПерелома.Открытый CustomAttributes) + Открытый, + + // *** Start programmer edit section *** (ТипПерелома.Закрытый CustomAttributes) + + // *** End programmer edit section *** (ТипПерелома.Закрытый CustomAttributes) + Закрытый, + } +} + diff --git "a/Tests/Objects/\320\242\320\270\320\277\320\237\320\276\321\200\320\276\320\264\321\213.cs" "b/Tests/Objects/\320\242\320\270\320\277\320\237\320\276\321\200\320\276\320\264\321\213.cs" index 0c1bc9c5..7c4898b0 100644 --- "a/Tests/Objects/\320\242\320\270\320\277\320\237\320\276\321\200\320\276\320\264\321\213.cs" +++ "b/Tests/Objects/\320\242\320\270\320\277\320\237\320\276\321\200\320\276\320\264\321\213.cs" @@ -1,106 +1,104 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace NewPlatform.Flexberry.ORM.ODataService.Tests -{ - using System; - using System.Xml; - using ICSSoft.STORMNET; - - - // *** Start programmer edit section *** (Using statements) - - // *** End programmer edit section *** (Using statements) - - - /// - /// ТипПороды. - /// - // *** Start programmer edit section *** (ТипПороды CustomAttributes) - - // *** End programmer edit section *** (ТипПороды CustomAttributes) - [AutoAltered()] - [AccessType(ICSSoft.STORMNET.AccessType.none)] - public class ТипПороды : ICSSoft.STORMNET.DataObject - { - - private string fНазвание; - - private System.DateTime fДатаРегистрации; - - // *** Start programmer edit section *** (ТипПороды CustomMembers) - - // *** End programmer edit section *** (ТипПороды CustomMembers) - - - /// - /// Название. - /// - // *** Start programmer edit section *** (ТипПороды.Название CustomAttributes) - - // *** End programmer edit section *** (ТипПороды.Название CustomAttributes) - [StrLen(255)] - public virtual string Название - { - get - { - // *** Start programmer edit section *** (ТипПороды.Название Get start) - - // *** End programmer edit section *** (ТипПороды.Название Get start) - string result = this.fНазвание; - // *** Start programmer edit section *** (ТипПороды.Название Get end) - - // *** End programmer edit section *** (ТипПороды.Название Get end) - return result; - } - set - { - // *** Start programmer edit section *** (ТипПороды.Название Set start) - - // *** End programmer edit section *** (ТипПороды.Название Set start) - this.fНазвание = value; - // *** Start programmer edit section *** (ТипПороды.Название Set end) - - // *** End programmer edit section *** (ТипПороды.Название Set end) - } - } - - /// - /// ДатаРегистрации. - /// - // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации CustomAttributes) - - // *** End programmer edit section *** (ТипПороды.ДатаРегистрации CustomAttributes) - public virtual System.DateTime ДатаРегистрации - { - get - { - // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Get start) - - // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Get start) - System.DateTime result = this.fДатаРегистрации; - // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Get end) - - // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Get end) - return result; - } - set - { - // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Set start) - - // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Set start) - this.fДатаРегистрации = value; - // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Set end) - - // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Set end) - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NewPlatform.Flexberry.ORM.ODataService.Tests +{ + using ICSSoft.STORMNET; + + + // *** Start programmer edit section *** (Using statements) + + // *** End programmer edit section *** (Using statements) + + + /// + /// ТипПороды. + /// + // *** Start programmer edit section *** (ТипПороды CustomAttributes) + + // *** End programmer edit section *** (ТипПороды CustomAttributes) + [AutoAltered()] + [AccessType(ICSSoft.STORMNET.AccessType.none)] + public class ТипПороды : ICSSoft.STORMNET.DataObject + { + + private System.DateTime fДатаРегистрации; + + private string fНазвание; + + // *** Start programmer edit section *** (ТипПороды CustomMembers) + + // *** End programmer edit section *** (ТипПороды CustomMembers) + + + /// + /// ДатаРегистрации. + /// + // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации CustomAttributes) + + // *** End programmer edit section *** (ТипПороды.ДатаРегистрации CustomAttributes) + public virtual System.DateTime ДатаРегистрации + { + get + { + // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Get start) + + // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Get start) + System.DateTime result = this.fДатаРегистрации; + // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Get end) + + // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Get end) + return result; + } + set + { + // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Set start) + + // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Set start) + this.fДатаРегистрации = value; + // *** Start programmer edit section *** (ТипПороды.ДатаРегистрации Set end) + + // *** End programmer edit section *** (ТипПороды.ДатаРегистрации Set end) + } + } + + /// + /// Название. + /// + // *** Start programmer edit section *** (ТипПороды.Название CustomAttributes) + + // *** End programmer edit section *** (ТипПороды.Название CustomAttributes) + [StrLen(255)] + public virtual string Название + { + get + { + // *** Start programmer edit section *** (ТипПороды.Название Get start) + + // *** End programmer edit section *** (ТипПороды.Название Get start) + string result = this.fНазвание; + // *** Start programmer edit section *** (ТипПороды.Название Get end) + + // *** End programmer edit section *** (ТипПороды.Название Get end) + return result; + } + set + { + // *** Start programmer edit section *** (ТипПороды.Название Set start) + + // *** End programmer edit section *** (ТипПороды.Название Set start) + this.fНазвание = value; + // *** Start programmer edit section *** (ТипПороды.Название Set end) + + // *** End programmer edit section *** (ТипПороды.Название Set end) + } + } + } +} + diff --git "a/Tests/Objects/\320\246\320\270\321\204\321\200\320\260.cs" "b/Tests/Objects/\320\246\320\270\321\204\321\200\320\260.cs" index 2c0fb7e9..1b55767a 100644 --- "a/Tests/Objects/\320\246\320\270\321\204\321\200\320\260.cs" +++ "b/Tests/Objects/\320\246\320\270\321\204\321\200\320\260.cs" @@ -1,19 +1,16 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ namespace NewPlatform.Flexberry.ORM.ODataService.Tests { - using System; - using System.Xml; - - + + // *** Start programmer edit section *** (Using statements) // *** End programmer edit section *** (Using statements) @@ -27,55 +24,56 @@ namespace NewPlatform.Flexberry.ORM.ODataService.Tests // *** End programmer edit section *** (Цифра CustomAttributes) public enum Цифра { - + // *** Start programmer edit section *** (Цифра.Ноль CustomAttributes) // *** End programmer edit section *** (Цифра.Ноль CustomAttributes) Ноль, - + // *** Start programmer edit section *** (Цифра.Один CustomAttributes) // *** End programmer edit section *** (Цифра.Один CustomAttributes) Один, - + // *** Start programmer edit section *** (Цифра.Два CustomAttributes) // *** End programmer edit section *** (Цифра.Два CustomAttributes) Два, - + // *** Start programmer edit section *** (Цифра.Три CustomAttributes) // *** End programmer edit section *** (Цифра.Три CustomAttributes) Три, - + // *** Start programmer edit section *** (Цифра.Четыре CustomAttributes) // *** End programmer edit section *** (Цифра.Четыре CustomAttributes) Четыре, - + // *** Start programmer edit section *** (Цифра.Пять CustomAttributes) // *** End programmer edit section *** (Цифра.Пять CustomAttributes) Пять, - + // *** Start programmer edit section *** (Цифра.Шесть CustomAttributes) // *** End programmer edit section *** (Цифра.Шесть CustomAttributes) Шесть, - + // *** Start programmer edit section *** (Цифра.Семь CustomAttributes) // *** End programmer edit section *** (Цифра.Семь CustomAttributes) Семь, - + // *** Start programmer edit section *** (Цифра.Восемь CustomAttributes) // *** End programmer edit section *** (Цифра.Восемь CustomAttributes) Восемь, - + // *** Start programmer edit section *** (Цифра.Девять CustomAttributes) // *** End programmer edit section *** (Цифра.Девять CustomAttributes) Девять, } } +