public void DeleteAggregatorWithManyDetailsTest() { foreach (IDataService dataService in DataServices) { // Arrange. SQLDataService ds = dataService as SQLDataService; //TODO: Fix OracleDataService error. if (dataService is OracleDataService) { continue; } var masterCl = new Пользователь { ФИО = "фио" }; var aggregator = new Конкурс { Название = "название", Организатор = masterCl }; var detailOne = new КритерийОценки { ПорядковыйНомер = 4 }; var detailTwo = new ДокументацияККонкурсу { Файл = new WebFile() }; aggregator.КритерииОценки.Add(detailOne); aggregator.Документы.Add(detailTwo); ds.UpdateObject(aggregator); // Act LoadingCustomizationStruct lcsAggregator = LoadingCustomizationStruct.GetSimpleStruct(typeof(Конкурс), Конкурс.Views.КонкурсE); LoadingCustomizationStruct lcsDetailOne = LoadingCustomizationStruct.GetSimpleStruct(typeof(КритерийОценки), КритерийОценки.Views.КритерийОценкиE); LoadingCustomizationStruct lcsDetailTwo = LoadingCustomizationStruct.GetSimpleStruct(typeof(ДокументацияККонкурсу), ДокументацияККонкурсу.Views.ДокументацияККонкурсуE); DataObject[] dataObjectsAggregator = ds.LoadObjects(lcsAggregator); DataObject[] dataObjectsDetailOne = ds.LoadObjects(lcsDetailOne); DataObject[] dataObjectsDetailTwo = ds.LoadObjects(lcsDetailTwo); int countAggregatorBefore = ds.GetObjectsCount(lcsAggregator); int countDetailOneBefore = ds.GetObjectsCount(lcsDetailOne); int countDetailTwoBefore = ds.GetObjectsCount(lcsDetailTwo); List <DataObject> objectsForUpdateList = new List <DataObject>(); foreach (Конкурс конкурс in dataObjectsAggregator) { конкурс.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(конкурс); } foreach (КритерийОценки критерий in dataObjectsDetailOne) { критерий.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(критерий); } foreach (ДокументацияККонкурсу документ in dataObjectsDetailTwo) { документ.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(документ); } DataObject[] objectsForUpdate = objectsForUpdateList.ToArray(); ds.UpdateObjects(ref objectsForUpdate); int countAggregatorAfter = ds.GetObjectsCount(lcsAggregator); int countDetailOneAfter = ds.GetObjectsCount(lcsDetailOne); int countDetailTwoAfter = ds.GetObjectsCount(lcsDetailTwo); // Assert Assert.Equal(1, countAggregatorBefore); Assert.Equal(1, countDetailOneBefore); Assert.Equal(1, countDetailTwoBefore); Assert.Equal(0, countAggregatorAfter); Assert.Equal(0, countDetailOneAfter); Assert.Equal(0, countDetailTwoAfter); } }
public void DeleteAggregatorWithDetailAndHierarhiTest() { foreach (IDataService dataService in DataServices) { // Arrange. SQLDataService ds = dataService as SQLDataService; //TODO: Fix OracleDataService error. if (dataService is OracleDataService) { continue; } var masterForest = new Лес { Название = "лес1" }; var detailDen = new Берлога { Наименование = "берлога1", ЛесРасположения = masterForest }; var aggregatorBear = new Медведь { ПорядковыйНомер = 2, ЛесОбитания = masterForest }; aggregatorBear.Берлога.Add(detailDen); ds.UpdateObject(aggregatorBear); var aggregatorBearMother = new Медведь { ПорядковыйНомер = 2 }; aggregatorBear.Мама = aggregatorBearMother; ds.UpdateObject(aggregatorBear); // Act & Assert. LoadingCustomizationStruct lcsBear = LoadingCustomizationStruct.GetSimpleStruct(typeof(Медведь), Медведь.Views.МедведьE); LoadingCustomizationStruct lcsForest = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE); DataObject[] dataObjectsBear = ds.LoadObjects(lcsBear); DataObject[] dataObjectsForest = ds.LoadObjects(lcsForest); // Act int countBearBefore = ds.GetObjectsCount(lcsBear); int countForestBefore = ds.GetObjectsCount(lcsForest); List <DataObject> objectsForUpdateList = new List <DataObject>(); foreach (Медведь медведь in dataObjectsBear) { медведь.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(медведь); } foreach (Лес лес in dataObjectsForest) { лес.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(лес); } DataObject[] objectsForUpdate = objectsForUpdateList.ToArray(); ds.UpdateObjects(ref objectsForUpdate); int countBearAfter = ds.GetObjectsCount(lcsBear); int countForestAfter = ds.GetObjectsCount(lcsForest); // Assert Assert.Equal(2, countBearBefore); Assert.Equal(1, countForestBefore); Assert.Equal(0, countBearAfter); Assert.Equal(0, countForestAfter); } }
public void DeleteUpdateAssociationTest() { foreach (IDataService dataService in DataServices) { // Arrange. SQLDataService ds = dataService as SQLDataService; //TODO: Fix OracleDataService error. if (dataService is OracleDataService) { continue; } var masterBreedType = new ТипПороды { Название = "тип породы1", ДатаРегистрации = DateTime.Now }; var innerMasterBreed = new Порода { Название = "порода1", ТипПороды = masterBreedType }; var innerMasterCat = new Кошка { Кличка = "кошка", ДатаРождения = (NullableDateTime)DateTime.Now, Тип = ТипКошки.Дикая, Порода = innerMasterBreed }; var innerKitten = new Котенок { КличкаКотенка = "котеночек", Кошка = innerMasterCat }; // Act ds.UpdateObject(innerKitten); LoadingCustomizationStruct lcsKitten = LoadingCustomizationStruct.GetSimpleStruct(typeof(Котенок), Котенок.Views.КотенокE); LoadingCustomizationStruct lcsCat = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE); LoadingCustomizationStruct lcsBreed = LoadingCustomizationStruct.GetSimpleStruct(typeof(Порода), Порода.Views.ПородаE); LoadingCustomizationStruct lcsBreedType = LoadingCustomizationStruct.GetSimpleStruct(typeof(ТипПороды), ТипПороды.Views.ТипПородыE); DataObject[] dataObjectsKitten = ds.LoadObjects(lcsKitten); DataObject[] dataObjectsCats = ds.LoadObjects(lcsCat); DataObject[] dataObjectsBreed = ds.LoadObjects(lcsBreed); DataObject[] dataObjectsBreedTypes = ds.LoadObjects(lcsBreedType); int countKittenBefore = ds.GetObjectsCount(lcsKitten); int countCatBefore = ds.GetObjectsCount(lcsCat); int countBreedBefore = ds.GetObjectsCount(lcsBreed); int countBreedTypeBefore = ds.GetObjectsCount(lcsBreed); List <DataObject> objectsForUpdateList = new List <DataObject>(); foreach (Котенок котенок in dataObjectsKitten) { котенок.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(котенок); } foreach (Кошка кошка in dataObjectsCats) { кошка.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(кошка); } foreach (Порода порода in dataObjectsBreed) { порода.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(порода); } foreach (ТипПороды типПороды in dataObjectsBreedTypes) { типПороды.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(типПороды); } DataObject[] objectsForUpdate = objectsForUpdateList.ToArray(); ds.UpdateObjects(ref objectsForUpdate); int countKittenAfter = ds.GetObjectsCount(lcsKitten); int countCatAfter = ds.GetObjectsCount(lcsCat); int countBreedAfter = ds.GetObjectsCount(lcsBreed); int countBreedTypeAfter = ds.GetObjectsCount(lcsBreedType); // Assert Assert.Equal(1, countKittenBefore); Assert.Equal(1, countCatBefore); Assert.Equal(1, countBreedBefore); Assert.Equal(1, countBreedTypeBefore); Assert.Equal(0, countKittenAfter); Assert.Equal(0, countCatAfter); Assert.Equal(0, countBreedAfter); Assert.Equal(0, countBreedTypeAfter); } }
public void DetailsDeleteTest() { foreach (IDataService dataService in DataServices) { // Arrange SQLDataService ds = (SQLDataService)dataService; const string First = "Первый"; const string Second = "Второй"; const string Third = "Третий"; const string Fourth = "Четвертый"; ТипЛапы передняяЛапа = new ТипЛапы { Актуально = true, Название = "Передняя" }; ТипЛапы задняяЛапа = new ТипЛапы { Актуально = true, Название = "Задняя" }; Кошка aggregator = new Кошка { ДатаРождения = (NullableDateTime)DateTime.Now, Тип = ТипКошки.Дикая, Порода = new Порода { Название = "Чеширская" }, Кличка = "Мурка" }; aggregator.Лапа.AddRange( new Лапа { Цвет = First, ТипЛапы = передняяЛапа }, new Лапа { Цвет = Second, ТипЛапы = передняяЛапа }, new Лапа { Цвет = Third, ТипЛапы = задняяЛапа }, new Лапа { Цвет = Fourth, ТипЛапы = задняяЛапа }); ds.UpdateObject(aggregator); LoadingCustomizationStruct lcsCat = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE); LoadingCustomizationStruct lcsPaws = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лапа), Лапа.Views.ЛапаFull); LoadingCustomizationStruct lcsPawsType = LoadingCustomizationStruct.GetSimpleStruct(typeof(ТипЛапы), ТипЛапы.Views.ТипЛапыE); DataObject[] dataObjectsCats = ds.LoadObjects(lcsCat); DataObject[] dataObjectsPawsTypes = ds.LoadObjects(lcsPawsType); // Act int countCatBefore = ds.GetObjectsCount(lcsCat); int countPawsBefore = ds.GetObjectsCount(lcsPaws); int countPawsTypeBefore = ds.GetObjectsCount(lcsPawsType); List <DataObject> objectsForUpdateList = new List <DataObject>(); foreach (Кошка кошка in dataObjectsCats) { кошка.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(кошка); } foreach (ТипЛапы типЛапы in dataObjectsPawsTypes) { типЛапы.SetStatus(ObjectStatus.Deleted); objectsForUpdateList.Add(типЛапы); } DataObject[] objectsForUpdate = objectsForUpdateList.ToArray(); ds.UpdateObjects(ref objectsForUpdate); int countCatAfter = ds.GetObjectsCount(lcsCat); int countPawsAfter = ds.GetObjectsCount(lcsPaws); int countPawsTypeAfter = ds.GetObjectsCount(lcsPawsType); // Assert Assert.Equal(1, countCatBefore); Assert.Equal(4, countPawsBefore); Assert.Equal(2, countPawsTypeBefore); Assert.Equal(0, countCatAfter); Assert.Equal(0, countPawsAfter); Assert.Equal(0, countPawsTypeAfter); } }
public void GetObjectIndexesWithPksOrderingTest() { foreach (IDataService dataService in DataServices) { //TODO: Fix OracleDataService error. if (dataService is OracleDataService) { continue; } // Arrange. SQLDataService ds = dataService as SQLDataService; SQLWhereLanguageDef langDef = SQLWhereLanguageDef.LanguageDef; List <DataObject> dataObjects = new List <DataObject>(); bool isMssql = dataService.GetType() == typeof(MSSQLDataService) || dataService.GetType().IsSubclassOf(typeof(MSSQLDataService)); // MSSQL в отличие от других хранилищ имеет свой формат сортировки гуидов. Для его поддержки приходится пользоваться специальным типом SqlGuid. List <SqlGuid> keysMssqlList = new List <SqlGuid>(); List <Guid> keysPostgresList = new List <Guid>(); // Создадим 1000 медведей. int objectsCount = 1000; for (int i = 0; i < objectsCount; i++) { // Для простоты анализа проблем с данными, если они возникнут, выдадим ненастоящие последовательные гуиды. byte[] bytes = new byte[16]; BitConverter.GetBytes(i).CopyTo(bytes, 0); var pk = new Guid(bytes); if (isMssql) { keysMssqlList.Add(pk); } else { keysPostgresList.Add(pk); } var createdBear = new Медведь { __PrimaryKey = pk, ЦветГлаз = "Косолапый Мишка " + i, Вес = i }; dataObjects.Add(createdBear); } DataObject[] dataObjectsForUpdate = dataObjects.ToArray(); ds.UpdateObjects(ref dataObjectsForUpdate); LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Медведь), Медведь.Views.МедведьL); Function findFunction = langDef.GetFunction(langDef.funcL, new VariableDef(langDef.StringType, Information.ExtractPropertyPath <Медведь>(m => m.Вес)), objectsCount); if (isMssql) { keysMssqlList.Sort(); } else { keysPostgresList.Sort(); } // Act. IDictionary <int, string> result = ds.GetObjectIndexesWithPks(lcs, findFunction, null); // Assert. var values = result.Values.GetEnumerator(); var keys = result.Keys.GetEnumerator(); for (int i = 0; i < objectsCount; i++) { Assert.Equal(objectsCount, result.Count); values.MoveNext(); keys.MoveNext(); string key = isMssql ? ((Guid)keysMssqlList[i]).ToString("B") : keysPostgresList[i].ToString("B"); Assert.Equal(key, values.Current); Assert.Equal(i + 1, keys.Current); } } }
/// <summary> /// The execute. /// </summary> /// <param name="ds"> /// The ds. /// </param> /// <param name="viewName"> /// The view name. /// </param> /// <param name="t"> /// The t. /// </param> /// <param name="expr"> /// The expr. /// </param> /// <returns> /// The <see cref="object"/>. /// </returns> public static object Execute(this SQLDataService ds, string viewName, Type t, Expression expr) { return(ds.Execute(viewName, t, expr, null)); }