public void GetLcsTestSortMasterField() { IQueryable <Кошка> queryList = new List <Кошка>().AsQueryable(); IOrderedQueryable <Кошка> query = from pn in queryList orderby pn.Порода.Название ascending select pn; Expression queryExpression = query.Expression; var expected = new LoadingCustomizationStruct(null) { ColumnsSort = new[] { new ColumnsSortDef(Information.ExtractPropertyPath <Кошка>(c => c.Порода.Название), SortOrder.Asc) } }; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Кошка.Views.КошкаE); Assert.True(Equals(expected, actual)); IQueryable <Кошка> query2 = (from pn in queryList select pn).OrderBy(pn => pn.Порода == null ? null : pn.Порода.Название); Expression queryExpression2 = query2.Expression; LoadingCustomizationStruct actual2 = LinqToLcs.GetLcs(queryExpression2, Кошка.Views.КошкаE); Assert.True(Equals(expected, actual2)); }
public void LoadingObjectLoadObjectsTest() { // TODO: Обработать после выполнения задачи 4009 var dataService = new MSSQLDataService(); dataService.CustomizationString = ConfigurationManager.ConnectionStrings["TestAppNormal"] .ConnectionString; // Создание тестовой записи. var тестовыйМедведь = new Медведь() { ПорядковыйНомер = 15, Вес = 39 }; dataService.UpdateObject(тестовыйМедведь); var view = new View { DefineClassType = typeof(Медведь) }; view.AddProperties( new string[1] { "ВычислимоеПоле" }); // Загрузка объектов. IQueryable <Медведь> dataМедведи = dataService.Query <Медведь>(view).Where(w => w.__PrimaryKey == тестовыйМедведь.__PrimaryKey); var lcs = LinqToLcs.GetLcs(dataМедведи.Expression, view); lcs.View = view; lcs.LoadingTypes = new[] { typeof(Медведь) }; lcs.ReturnType = LcsReturnType.Objects; // Загрузка данных без создания объктов. var медведи = dataService.LoadObjects(lcs); Assert.True(1 == медведи.Length, "Запись должна быть одна."); foreach (var stringDataView in медведи) { int fieldSum = ((Медведь)stringDataView).ВычислимоеПоле; Assert.True(54 == fieldSum, "ВычислимоеПоле"); } Assert.True(1 == dataМедведи.Count(), "Запись должна быть одна."); foreach (var медведь in dataМедведи) { Assert.True(1 == медведь.ВычислимоеПоле, "ВычислимоеПоле"); } // Удаление тестовой записи. тестовыйМедведь.SetStatus(ObjectStatus.Deleted); dataService.UpdateObject(тестовыйМедведь); }
public void LoadingObjectLoadStringedObjectViewTest() { // TODO: Обработать после выполнения задачи 4009 var dataService = new MSSQLDataService(); dataService.CustomizationString = "SERVER=rtc-storm;Trusted_connection=yes;DATABASE=dochitka_test;"; // Cоздание тестовой записи. var тестовыйМедведь = new Медведь() { ПорядковыйНомер = 15, Вес = 39 }; dataService.UpdateObject(тестовыйМедведь); var view = new View { DefineClassType = typeof(Медведь) }; view.AddProperties( new string[1] { "ВычислимоеПоле" }); // Загрузка объектов. IQueryable <Медведь> dataМедведи = dataService.Query <Медведь>(view).Where(w => w.__PrimaryKey == тестовыйМедведь.__PrimaryKey); var lcs = LinqToLcs.GetLcs(dataМедведи.Expression, view); lcs.View = view; lcs.LoadingTypes = new[] { typeof(Медведь) }; lcs.ReturnType = LcsReturnType.Objects; // Загрузка данных без создания объктов. var медведи = dataService.LoadStringedObjectView('\t', lcs); Assert.True(1 == медведи.Length, "Запись должна быть одна."); foreach (var stringDataView in медведи) { int fieldSum = Int32.Parse(stringDataView.ObjectedData[0].ToString()); Assert.True(54 == fieldSum, "ВычислимоеПоле"); } Assert.True(1 == dataМедведи.Count(), "Запись должна быть одна."); foreach (var медведь in dataМедведи) { Assert.True(54 == медведь.ВычислимоеПоле, "ВычислимоеПоле"); } // Удаление тестовой записи. тестовыйМедведь.SetStatus(ObjectStatus.Deleted); dataService.UpdateObject(тестовыйМедведь); }
public void GetLcsTestStringEqualsWithDynamicView() { var query = from pn in new List <Кошка>().AsQueryable() where pn.Кличка.Equals("Кошка") select pn; var queryExpression = query.Expression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(Кошка)); Assert.NotNull(actual.View); Assert.Equal(1, actual.View.Properties.Count()); Assert.Equal(Information.ExtractPropertyPath <Кошка>(x => x.Кличка), actual.View.Properties[0].Name); }
/// <summary> /// Здесь лучше всего писать бизнес-логику, оперируя только объектом данных. /// </summary> protected override void PreApplyToControls() { var ds = (SQLDataService)DataServiceProvider.DataService; var emp = ds.Query <Employee>(Employee.Views.EmployeeL); var chiefs = from e in emp where (e.male && !e.spouse) || !e.male select e; ctrlEmployee.LimitFunction = LinqToLcs.GetLcs(chiefs.Expression, Employee.Views.EmployeeL).LimitFunction; }
/// <summary> /// Здесь лучше всего писать бизнес-логику, оперируя только объектом данных. /// </summary> protected override void PreApplyToControls() { // *** Start programmer edit section *** (Using statements) ctrlОрганизация.PropertyToShow = Information.ExtractPropertyPath <Организация>(t => t.Актуальность); var ds = (SQLDataService)DataServiceProvider.DataService; var actualOrganizations = ds.Query <Организация>(Организация.Views.ОрганизацияL).Where(t => t.Актуальность); ctrlОрганизация.LimitFunction = LinqToLcs.GetLcs(actualOrganizations.Expression, Организация.Views.ОрганизацияL).LimitFunction; // *** End programmer edit section *** (Using statements) }
public void LcsDynamicViewTestForSimpleFunction() { var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Кошка>(testProvider).Where(k => k.Кличка == "кошка").ToList(); Expression queryExpression = testProvider.InnerExpression; var result = LinqToLcs.GetLcs <Кошка>(queryExpression); // Проверка, что использованное свойство есть в представлении Assert.True(result.View.CheckPropname(КличкаName)); }
public void LcsDynamicViewTestForDetail() { var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Кошка>(testProvider).Where(k => k.Лапа.Cast <Лапа>().Any(l => l.азмер > 5)).ToList(); Expression queryExpression = testProvider.InnerExpression; var result = LinqToLcs.GetLcs <Кошка>(queryExpression); Assert.True(result.View.Details.Any(d => d.Name.Equals(ЛапаName))); Assert.True(result.View.GetDetail(ЛапаName).View.CheckPropname(азмерName)); }
public void GetLcsTestBooleanVariableDefWithDynamicView() { var testProvider = new TestLcsQueryProvider <ТипЛапы>(); new Query <ТипЛапы>(testProvider).Where(o => o.Актуально).ToList(); var queryExpression = testProvider.InnerExpression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(ТипЛапы)); Assert.NotNull(actual.View); Assert.Equal(1, actual.View.Properties.Count()); Assert.Equal(Information.ExtractPropertyPath <ТипЛапы>(x => x.Актуально), actual.View.Properties[0].Name); }
public void TestUseGuidPropertyWithDynamicView() { var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Кошка>(testProvider).Where(o => o.Ключ == "{72FCA622-A01E-494C-BE1C-0821178594FB}").ToArray(); var queryExpression = testProvider.InnerExpression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(Кошка)); Assert.NotNull(actual.View); Assert.Equal(1, actual.View.Properties.Count()); Assert.Equal(Information.ExtractPropertyPath <Кошка>(x => x.Ключ), actual.View.Properties[0].Name); }
/// <summary> /// Вызывается самым первым в Page_Load. /// </summary> protected override void Preload() { ctrlEmployeeTake.MasterViewName = Employee.Views.EmployeeL.Name; // Забрать велосипед может только директор или менеджер. var ds = DataServiceProvider.DataService; var queryEmp = ds.Query <Employee>(Employee.Views.EmployeeL.Name) .Where(item => item.Position.Equals(Positions.Директор) || item.Position.Equals(Positions.Менеджер)); ctrlEmployeeTake.LimitFunction = LinqToLcs.GetLcs( queryEmp.Expression, Employee.Views.EmployeeL).LimitFunction; }
public void GetLcsTest9() { IQueryable <Кошка> queryList = new List <Кошка>().AsQueryable(); IQueryable <Кошка> query = (from pn in queryList select pn).Take(1); Expression queryExpression = query.Expression; var expected = new LoadingCustomizationStruct(null) { ReturnTop = 1 }; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка))); Assert.True(Equals(expected, actual)); }
/// <summary> /// Пример получения функции ограничения из LINQ-запроса для Flexberry ORM. /// </summary> static void GetLimitFunctionFromLcs() { var ds = (SQLDataService)DataServiceProvider.DataService; var goodsC = ds.Query <Товар>(Товар.Views.ТоварL.Name).Where(t => t.КодТовара == 33); var goodLimit = LinqToLcs.GetLcs(goodsC.Expression, Товар.Views.ТоварL).LimitFunction; var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Товар), Товар.Views.ТоварL); lcs.LimitFunction = goodLimit; var good = ds.LoadObjects(lcs).Cast <Товар>().FirstOrDefault(); Console.WriteLine($"Название: {good?.Название}"); }
public void LcsDynamicViewTestForMaster() { var strGuid = Guid.NewGuid().ToString(); var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Кошка>(testProvider).Where(k => k.Порода.__PrimaryKey.ToString() == strGuid).ToList(); Expression queryExpression = testProvider.InnerExpression; var result = LinqToLcs.GetLcs <Кошка>(queryExpression); Assert.True(result.View.Properties.Any(m => m.Name.Equals(ПородаName))); }
public void GetLcsTestDataObjectWithDynamicView() { var порода = new Порода(); var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Кошка>(testProvider).Where(o => порода.Equals(o.Порода)).ToArray(); var queryExpression = testProvider.InnerExpression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(Кошка)); Assert.NotNull(actual.View); Assert.Equal(1, actual.View.Properties.Count()); Assert.Equal(Information.ExtractPropertyPath <Кошка>(x => x.Порода), actual.View.Properties[0].Name); }
/// <summary> /// Вызывается самым первым в Page_Load. /// </summary> protected override void Preload() { WebObjectListView1.DataObjectTypes = new[] { typeof(RentSession) }; WebObjectListView1.View = RentSession.Views.TakeBicycleL; WebObjectListView1.Operations.New = false; WebObjectListView1.Operations.Delete = false; var ds = DataServiceProvider.DataService; var query = ds.Query <RentSession>(RentSession.Views.TakeBicycleL.Name) .Where(item => item.SessionState.Equals(SessionState.Открыта)); WebObjectListView1.LimitFunction = LinqToLcs.GetLcs( query.Expression, RentSession.Views.TakeBicycleL).LimitFunction; }
public void GetLcsTestDateTimeNowWithDynamicView() { var testProvider = new TestLcsQueryProvider <Перелом>(); new Query <Перелом>(testProvider).Where(o => o.Дата <= DateTime.Now).ToArray(); var queryExpression = testProvider.InnerExpression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(Перелом)); Assert.NotNull(actual.View); // Свойства 2, поскольку если есть агрегирующее свойство, то оно обязательно включается. Assert.Equal(2, actual.View.Properties.Count()); Assert.True(actual.View.Properties.Select(x => x.Name).Contains(Information.ExtractPropertyPath <Перелом>(x => x.Дата))); }
public void GetLcsTestNullableCharWithDynamicView() { var testProvider = new TestLcsQueryProvider <Лапа>(); new Query <Лапа>(testProvider).Where(x => x.азмерNullableChar == null).ToList(); var queryExpression = testProvider.InnerExpression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(Лапа)); Assert.NotNull(actual.View); // Свойства 2, поскольку если есть агрегирующее свойство, то оно обязательно включается. Assert.Equal(2, actual.View.Properties.Count()); Assert.True(actual.View.Properties.Select(x => x.Name).Contains(Information.ExtractPropertyPath <Лапа>(x => x.азмерNullableChar))); }
public void GetLcsTestNullableIntWithNull3() { var testProvider = new TestLcsQueryProvider <Лапа>(); new Query <Лапа>(testProvider).Where(x => x.азмерNullableInt > null).ToList(); Expression queryExpression = testProvider.InnerExpression; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Лапа))); var expected = new LoadingCustomizationStruct(null) { LimitFunction = ldef.GetFunction(ldef.funcNOT, this.ldef.GetFunction(this.ldef.paramTrue)) }; Assert.True(Equals(expected, actual)); }
/// <summary> /// Здесь лучше всего писать бизнес-логику, оперируя только объектом данных. /// </summary> protected override void PreApplyToControls() { var ds = (SQLDataService)DataServiceProvider.DataService; var actualCar = ds.Query <Машина>(Машина.Views.МашинаL).Where(k => k.Актуально); ctrlМашина.LimitFunction = LinqToLcs.GetLcs(actualCar.Expression, Машина.Views.МашинаL).LimitFunction; var actualWarehouse = ds.Query <Склад>(Склад.Views.СкладL).Where(k => k.Актуально); ctrlСклад.LimitFunction = LinqToLcs.GetLcs(actualWarehouse.Expression, Склад.Views.СкладL).LimitFunction; var actualGood = ds.Query <Товар>(Товар.Views.ТоварL).Where(k => k.Актуально); ctrlТовар.LimitFunction = LinqToLcs.GetLcs(actualGood.Expression, Товар.Views.ТоварL).LimitFunction; }
public void LcsDynamicViewTestForSecondaryDetail() { var testProvider = new TestLcsQueryProvider <Кошка>(); var закрытый = ТипПерелома.Закрытый; new Query <Кошка>(testProvider).Where(k => k.Лапа.Cast <Лапа>().Any(l => l.Перелом.Cast <Перелом>() .Any(p => p.Тип == закрытый))).ToList(); Expression queryExpression = testProvider.InnerExpression; var result = LinqToLcs.GetLcs <Кошка>(queryExpression); Assert.True(result.View.Details.Any(d => d.Name.Equals(ЛапаName))); Assert.True(result.View.GetDetail(ЛапаName).View.Details.Any(d => d.Name.Equals(ПереломName))); Assert.True(result.View.GetDetail(ЛапаName).View.GetDetail(ПереломName).View.CheckPropname(ТипName)); }
public void GetLcsByDetailLimitTestWrongDetail() { var exception = Xunit.Record.Exception(() => { var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Порода>(testProvider).Where <Порода, Кошка>( Information.GetView("КошкаE", typeof(Кошка)), y => y.Any()).ToList(); Expression queryExpression = testProvider.InnerExpression; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Порода))); Assert.True(false, "Создано ограничение по упрощённой схеме для ненастоящего детейла."); }); Assert.IsType(typeof(NotFoundAggregatorProperty), exception); }
public void GetLcsTestEndsWithException() { var exception = Xunit.Record.Exception(() => { const string Pattern = "ка"; IQueryable <Кошка> queryList = new List <Кошка>().AsQueryable(); IQueryable <Кошка> query = from pn in queryList where pn.Кличка.EndsWith(Pattern, StringComparison.OrdinalIgnoreCase) select pn; Expression queryExpression = query.Expression; LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка))); }); Assert.IsType(typeof(MethodSignatureException), exception); }
public void GetLcsTest5() { const int Age = 0; IQueryable <Лапа> queryList = new List <Лапа>().AsQueryable(); IQueryable <Лапа> query = from pn in queryList where pn.Номер <= Age select pn; Expression queryExpression = query.Expression; var expected = new LoadingCustomizationStruct(null) { LimitFunction = this.ldef.GetFunction(this.ldef.funcLEQ, new VariableDef(this.ldef.NumericType, "Номер"), Age) }; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Лапа))); Assert.True(Equals(expected, actual)); }
public void GetLcsTestDataObjectWithDynamicView2() { var порода = new Порода { Название = "тест" }; var testProvider = new TestLcsQueryProvider <Кошка>(); new Query <Кошка>(testProvider).Where(o => o.Порода.Название.Equals(порода.Название)).ToArray(); var queryExpression = testProvider.InnerExpression; var actual = LinqToLcs.GetLcs(queryExpression, typeof(Кошка)); Assert.NotNull(actual.View); Assert.Equal(2, actual.View.Properties.Count()); Assert.True(actual.View.Properties.Select(x => x.Name).Contains(Information.ExtractPropertyPath <Кошка>(x => x.Порода))); Assert.True(actual.View.Properties.Select(x => x.Name).Contains(Information.ExtractPropertyPath <Кошка>(x => x.Порода.Название))); }
public void GetLcsTestLike() { var pattern = "sdf"; IQueryable <Кошка> queryList = new List <Кошка>().AsQueryable(); IQueryable <Кошка> query = from pn in queryList where pn.Кличка.IsLike(pattern) select pn; Expression queryExpression = query.Expression; var expected = new LoadingCustomizationStruct(null) { LimitFunction = ldef.GetFunction( this.ldef.funcLike, new VariableDef(this.ldef.StringType, "Кличка"), pattern) }; var actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка))); Assert.True(Equals(expected, actual)); }
public void GetLcsTestTicksException() { var exception = Xunit.Record.Exception(() => { var testProvider = new TestLcsQueryProvider <Перелом>(); DateTime moment = DateTime.Now.AddDays(-7); var predicate = (Expression <Func <Перелом, bool> >)(o => o.Дата.Ticks == 34); new Query <Перелом>(testProvider).Where(predicate).ToArray(); Expression queryExpression = testProvider.InnerExpression; LoadingCustomizationStruct actual = LinqToLcs.GetLcs( queryExpression, Utils.GetDefaultView(typeof(Перелом))); }); Assert.IsType(typeof(MethodSignatureException), exception); }
public void GetLcsTestStringEqualsReverse() { const string Pattern = "Кошка"; IQueryable <Кошка> queryList = new List <Кошка>().AsQueryable(); IQueryable <Кошка> query = from pn in queryList where Pattern.Equals(pn.Кличка) select pn; Expression queryExpression = query.Expression; var expected = new LoadingCustomizationStruct(null) { LimitFunction = this.ldef.GetFunction( this.ldef.funcEQ, Pattern, new VariableDef(this.ldef.StringType, "Кличка")) }; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка))); Assert.True(Equals(expected, actual)); }
/// <summary> /// Общий метод сравнения предполагаемой lcs и результата конвертации linq-выражения. /// </summary> /// <param name="predicate">Условие linq-выражения.</param> /// <param name="limitFunction">Предполагаемая lcs.</param> private bool CheckChar(Expression <Func <Лапа, bool> > predicate, Function limitFunction) { var testProvider = new TestLcsQueryProvider <Лапа>(); new Query <Лапа>(testProvider).Where(predicate).ToList(); Expression queryExpression = testProvider.InnerExpression; var expected = new LoadingCustomizationStruct(null) { LimitFunction = limitFunction }; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Лапа))); return(Equals(expected, actual)); }
public void GetLcsTestSubstringRevert() { const string ldefPattern = "__р%"; IQueryable <Кошка> queryList = new List <Кошка>().AsQueryable(); IQueryable <Кошка> query = from pn in queryList where "р" == pn.Кличка.Substring(2, 2) select pn; Expression queryExpression = query.Expression; var expected = new LoadingCustomizationStruct(null) { LimitFunction = ldef.GetFunction( this.ldef.funcLike, new VariableDef(this.ldef.StringType, "Кличка"), ldefPattern) }; LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка))); Assert.True(Equals(expected, actual)); }