protected void Page_Load(object sender, EventArgs e)
        {
            ctrlСклад.MasterViewName = Склад.Views.СкладL.Name;
            ctrlСклад.MasterTypeName = typeof(Склад).AssemblyQualifiedName;
            ctrlСклад.PropertyToShow = "Название";

            if (Session["storagepk"] != null)
            {
                var ds = (SQLDataService)DataServiceProvider.DataService;
                var автомашиныPseudoDetail = new PseudoDetail<Автомашина, Поступление>
                    (Поступление.Views.ПоступлениеE,
                    Information.ExtractPropertyPath<Поступление>(p => p.Автомашина));
                var ВладельцыАвтомашинИзПоступленийНаСклад = ds.Query<Автомашина>(Автомашина.Views.АвтомашинаE)
                    .Where(a => автомашиныPseudoDetail.Any(s => s.Склад.__PrimaryKey.ToString() == ctrlСклад.SelectedMasterPK)).ToList()
                    .Select(c => new { Фамилия = c.ВладелецАвтомашины.Фамилия }).Distinct();
                //var ВладельцыАвтомашин = АвтомашиныИзПоступленийНаСклад.Select(o => o.ВладелецАвтомашины.Фамилия).ToList();

                foreach (var Владелец in ВладельцыАвтомашинИзПоступленийНаСклад)
                {
                    TableRow tr = new TableRow();
                    TableCell tc = new TableCell() { Text = Владелец.Фамилия };
                    tr.Cells.Add(tc);
                    TableВладельцы.Rows.Add(tr);
                }
            }

            //WolvOwners.LimitFunction = LinqToLcs.GetLcs(АвтомашиныИзПоступленийНаСклад.Expression,
            //Автомашина.Views.АвтомашинаE).LimitFunction;
            //WolvOwners.LimitFunction = LinqToLcs.GetLcs(ВладельцыАвтомашин.ToList().AsQueryable().Expression,
            //Человек.Views.ЧеловекE).LimitFunction;
        }
示例#2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            ctrlСклад.MasterViewName = Склад.Views.СкладL.Name;
            ctrlСклад.MasterTypeName = typeof(Склад).AssemblyQualifiedName;
            ctrlСклад.PropertyToShow = "Название";

            if (Session["storagepk"] != null)
            {
                var ds = (SQLDataService)DataServiceProvider.DataService;
                var автомашиныPseudoDetail = new PseudoDetail <Автомашина, Поступление>
                                                 (Поступление.Views.ПоступлениеE,
                                                 Information.ExtractPropertyPath <Поступление>(p => p.Автомашина));
                var ВладельцыАвтомашинИзПоступленийНаСклад = ds.Query <Автомашина>(Автомашина.Views.АвтомашинаE)
                                                             .Where(a => автомашиныPseudoDetail.Any(s => s.Склад.__PrimaryKey.ToString() == ctrlСклад.SelectedMasterPK)).ToList()
                                                             .Select(c => new { Фамилия = c.ВладелецАвтомашины.Фамилия }).Distinct();
                //var ВладельцыАвтомашин = АвтомашиныИзПоступленийНаСклад.Select(o => o.ВладелецАвтомашины.Фамилия).ToList();

                foreach (var Владелец in ВладельцыАвтомашинИзПоступленийНаСклад)
                {
                    TableRow  tr = new TableRow();
                    TableCell tc = new TableCell()
                    {
                        Text = Владелец.Фамилия
                    };
                    tr.Cells.Add(tc);
                    TableВладельцы.Rows.Add(tr);
                }
            }

            //WolvOwners.LimitFunction = LinqToLcs.GetLcs(АвтомашиныИзПоступленийНаСклад.Expression,
            //Автомашина.Views.АвтомашинаE).LimitFunction;
            //WolvOwners.LimitFunction = LinqToLcs.GetLcs(ВладельцыАвтомашин.ToList().AsQueryable().Expression,
            //Человек.Views.ЧеловекE).LimitFunction;
        }
        public void GetLcsByPseudoDetailLimitTestSimpleAny2()
        {
            var pseudoDetail = new PseudoDetail <Порода, Кошка>(
                Information.GetView("КошкаE", typeof(Кошка)),
                Information.ExtractPropertyPath <Кошка>(x => x.Порода));

            var dvd = new DetailVariableDef(
                this.ldef.GetObjectType("Details"),
                "Кошка__Порода",
                Information.GetView("КошкаE", typeof(Кошка)),
                "Порода",
                new[] { SQLWhereLanguageDef.StormMainObjectKey });

            // Все породы, для которых есть кошки, кличка которых не Мурзик.
            CompareLcsWithLimitCommon(
                y => pseudoDetail.Any(x => x.Кличка != "Мурзик"),
                this.ldef.GetFunction("Exist", dvd, ldef.GetFunction(ldef.funcNEQ, new VariableDef(ldef.StringType, "Кличка"), "Мурзик")));
        }
示例#4
0
        /// <summary>
        /// Пример использования псевдодетейлов в запросах.
        /// </summary>
        /// <remarks>
        /// Псевдодетейлы используются, когда надо наложить ограничения (фильтр) на основной объект относительно мастерового.
        /// Поскольку навигационные свойства от мастеров к основным объектам данных отсутствуют, необходимо использовать вспомогательный класс
        /// для создания "виртуальной" связи от мастера к основному объекту.
        /// </remarks>
        static void ReadWithPseudoDetail()
        {
            var ds           = (SQLDataService)DataServiceProvider.DataService;
            var pd           = new PseudoDetail <Сотрудник, Склад>(Склад.Views.СкладE, Information.ExtractPropertyPath <Склад>(s => s.Менеджер));
            var sotrs        = ds.Query <Сотрудник>(Сотрудник.Views.СотрудникL);
            var sotrsInSklad = from s in sotrs where pd.Any() select s;

            Console.WriteLine("Все:");
            foreach (var item in sotrs)
            {
                Console.WriteLine($"ФИО: {item.Фамилия} {item.Имя} {item.Отчество}");
            }
            Console.WriteLine("На складе:");
            foreach (var item in sotrsInSklad)
            {
                Console.WriteLine($"ФИО: {item.Фамилия} {item.Имя} {item.Отчество}");
            }
        }
示例#5
0
        void OnButtonFindClick(Object sender, EventArgs e)
        {
            //перечислить владельцев машин, привозящих товар на конкретный склад

            string warehouse = mealСклад.SelectedMasterPK;

            SQLDataService ds = (SQLDataService)DataServiceProvider.DataService;

            var pseudoDetailМашина = new PseudoDetail <Машина, Поступления>(
                Поступления.Views.ПоступленияE,
                Information.ExtractPropertyPath <Поступления>(supply => supply.Машина));

            var carList = ds.Query <Машина>(Машина.Views.МашинаE).Where(car => pseudoDetailМашина.Any(supply => supply.Склад.__PrimaryKey == warehouse)).ToList();

            var result = carList.Select(car => car.ВладелецМашины).ToList();

            ctrlList1.DataSource = result;
            ctrlList1.DataBind();
        }
示例#6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            TableRow  tr;
            TableCell tc;

            var ds = (SQLDataService)DataServiceProvider.DataService;
            var автомашиныPseudoDetail = new PseudoDetail <Автомашина, Поступление>
                                             (Поступление.Views.ПоступлениеE,
                                             Information.ExtractPropertyPath <Поступление>(p => p.Автомашина));
            var автомашиныизпоступлений = ds.Query <Автомашина>(Автомашина.Views.АвтомашинаE).Where(a => автомашиныPseudoDetail.Any()).ToList();

            var складыPseudoDetail = new PseudoDetail <Склад, Поступление>
                                         (Поступление.Views.ПоступлениеE,
                                         Information.ExtractPropertyPath <Поступление>(p => p.Склад));
            var складыизпоступлений = ds.Query <Склад>(Склад.Views.СкладE).Where(s => складыPseudoDetail.Any()).ToList();

            List <Человек> владельцыпривозящиенасвойсклад = new List <Человек>();

            foreach (Склад склад in складыизпоступлений)
            {
                var владелецпривозящийнасвойсклад = автомашиныизпоступлений.Select(d => d.ВладелецАвтомашины)
                                                    .Distinct()
                                                    .Where(a => a.__PrimaryKey.ToString() == склад.ВладелецСклада.__PrimaryKey.ToString()).ToList();
                var владелец = владелецпривозящийнасвойсклад.FirstOrDefault();
                if (владелец != null)
                {
                    владельцыпривозящиенасвойсклад.Add(владелец);
                }
                ;
            }

            foreach (Человек человек in владельцыпривозящиенасвойсклад)
            {
                tr = new TableRow();
                tc = new TableCell()
                {
                    Text = человек.Фамилия, BorderStyle = BorderStyle.Solid, BorderWidth = 1
                };
                tr.Cells.Add(tc);
                TableВладельцыПривозящиеНаСвойСклад.Rows.Add(tr);
            }
        }
示例#7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var ds = (SQLDataService)DataServiceProvider.DataService;
            var товарPseudoDetail = new PseudoDetail <Товар, ТоварНаСкладе>
                                        (ТоварНаСкладе.Views.ТоварНаСкладеE,
                                        Information.ExtractPropertyPath <ТоварНаСкладе>(p => p.Товар));
            var товарынаскладах = ds.Query <Товар>(Товар.Views.ТоварE).Where(t => товарPseudoDetail.Any()).ToList()
                                  /*.Select(n => new { Наименование = n.Наименование })*/;

            var склады = ds.Query <Склад>(Склад.Views.СкладE).ToList();

            int количествоскладовсэтимтоваром;

            TableRow  tr;
            TableCell tc;

            foreach (Товар товар in товарынаскладах)
            {
                количествоскладовсэтимтоваром = 0;
                foreach (Склад склад in склады)
                {
                    var товарынаскладе = склад.ТоварНаСкладе.GetAllObjects();
                    foreach (ТоварНаСкладе товарнаскладе in товарынаскладе)
                    {
                        if (товарнаскладе.Товар.__PrimaryKey.ToString() == товар.__PrimaryKey.ToString())
                        {
                            количествоскладовсэтимтоваром++;
                        }
                    }
                }
                if (количествоскладовсэтимтоваром > 1)
                {
                    tr = new TableRow();
                    tc = new TableCell()
                    {
                        Text = товар.Наименование, BorderStyle = BorderStyle.Solid, BorderWidth = 1
                    };
                    tr.Cells.Add(tc);
                    TableТоварНаНесколькихСкладах.Rows.Add(tr);
                }
            }
        }
        public void GetLcsByPseudoDetailLimitTestConditionAll2()
        {
            var pseudoDetail = new PseudoDetail <Порода, Кошка>(
                Information.GetView("КошкаE", typeof(Кошка)),
                Information.ExtractPropertyPath <Кошка>(x => x.Порода));

            var dvd = new DetailVariableDef(
                this.ldef.GetObjectType("Details"),
                "Кошка__Порода",
                Information.GetView("КошкаE", typeof(Кошка)),
                "Порода",
                new[] { SQLWhereLanguageDef.StormMainObjectKey });

            var lf = ldef.GetFunction(
                ldef.funcAND,
                ldef.GetFunction(ldef.funcNEQ, new VariableDef(ldef.StringType, "Кличка"), "Барсик"),
                ldef.GetFunction(ldef.funcNEQ, new VariableDef(ldef.StringType, "Кличка"), "Мурзик"));

            // Все породы, в которые входят только кошки, не носящие клички ни "Барсик", ни "Мурзик".
            CompareLcsWithLimitCommon(y => pseudoDetail.All(x => x.Кличка != "Барсик" && x.Кличка != "Мурзик"), this.ldef.GetFunction(ldef.funcExistExact, dvd, lf));
        }
        void btnFindOnClick(Object sender, EventArgs e)
        {
            var ds   = (SQLDataService)DataServiceProvider.DataService;
            var cars = ds.Query <Машина>(Машина.Views.МашинаE.Name);

            var поставкиPseudoDetail = new PseudoDetail <Машина, Поставки>(
                Поставки.Views.ПоставкиE,
                Information.ExtractPropertyPath <Поставки>(p => p.Машина)
                );

            var машиныВПоставкахНаСклад =
                ds.Query <Машина>(Машина.Views.МашинаE)
                .Where(c => поставкиPseudoDetail.Any(p => p.Склад.Название == sklad.Text)).ToList();

            var владельцыМашин = машиныВПоставкахНаСклад.Select(c => c.ВладелецМашины).ToList();

            ExternalLangDef ldef = ExternalLangDef.LanguageDef;

            dataList.DataSource = владельцыМашин;
            dataList.DataBind();
        }
示例#10
0
        void btnFindOnClick(Object sender, EventArgs e)
        {
            var ds = (SQLDataService)DataServiceProvider.DataService;
            var cars = ds.Query<Машина>(Машина.Views.МашинаE.Name);

            var поставкиPseudoDetail = new PseudoDetail<Машина, Поставки>(
                Поставки.Views.ПоставкиE,
                Information.ExtractPropertyPath<Поставки>(p => p.Машина)
            );

            var машиныВПоставкахНаСклад =
                ds.Query<Машина>(Машина.Views.МашинаE)
                    .Where(c => поставкиPseudoDetail.Any(p => p.Склад.Название == sklad.Text)).ToList();

            var владельцыМашин = машиныВПоставкахНаСклад.Select(c => c.ВладелецМашины).ToList();

            ExternalLangDef ldef = ExternalLangDef.LanguageDef;

            dataList.DataSource = владельцыМашин;
            dataList.DataBind();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var ds = (SQLDataService)DataServiceProvider.DataService;
            var товарPseudoDetail = new PseudoDetail<Товар, ТоварНаСкладе>
                   (ТоварНаСкладе.Views.ТоварНаСкладеE,
                   Information.ExtractPropertyPath<ТоварНаСкладе>(p => p.Товар));
            var товарынаскладах = ds.Query<Товар>(Товар.Views.ТоварE).Where(t => товарPseudoDetail.Any()).ToList()
                /*.Select(n => new { Наименование = n.Наименование })*/;

            var склады = ds.Query<Склад>(Склад.Views.СкладE).ToList();

            int количествоскладовсэтимтоваром;

            TableRow tr;
            TableCell tc;

            foreach (Товар товар in товарынаскладах)
            {
                количествоскладовсэтимтоваром = 0;
                foreach(Склад склад in склады)
                {
                    var товарынаскладе = склад.ТоварНаСкладе.GetAllObjects();
                    foreach (ТоварНаСкладе товарнаскладе in товарынаскладе)
                    {
                        if (товарнаскладе.Товар.__PrimaryKey.ToString()==товар.__PrimaryKey.ToString())
                        {
                            количествоскладовсэтимтоваром++;
                        }
                    }
                }
                if (количествоскладовсэтимтоваром>1)
                {
                    tr = new TableRow();
                    tc = new TableCell() { Text = товар.Наименование, BorderStyle = BorderStyle.Solid, BorderWidth = 1 };
                    tr.Cells.Add(tc);
                    TableТоварНаНесколькихСкладах.Rows.Add(tr);
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            TableRow tr;
            TableCell tc;

            var ds = (SQLDataService)DataServiceProvider.DataService;
            var автомашиныPseudoDetail = new PseudoDetail<Автомашина, Поступление>
                   (Поступление.Views.ПоступлениеE,
                   Information.ExtractPropertyPath<Поступление>(p => p.Автомашина));
            var автомашиныизпоступлений = ds.Query<Автомашина>(Автомашина.Views.АвтомашинаE).Where(a=>автомашиныPseudoDetail.Any()).ToList();

            var складыPseudoDetail = new PseudoDetail<Склад, Поступление>
                   (Поступление.Views.ПоступлениеE,
                   Information.ExtractPropertyPath<Поступление>(p => p.Склад));
            var складыизпоступлений = ds.Query<Склад>(Склад.Views.СкладE).Where(s => складыPseudoDetail.Any()).ToList();

            List<Человек> владельцыпривозящиенасвойсклад=new List<Человек>();

            foreach (Склад склад in складыизпоступлений)
            {
                var владелецпривозящийнасвойсклад = автомашиныизпоступлений.Select(d => d.ВладелецАвтомашины)
                    .Distinct()
                    .Where(a => a.__PrimaryKey.ToString() == склад.ВладелецСклада.__PrimaryKey.ToString()).ToList();
                var владелец = владелецпривозящийнасвойсклад.FirstOrDefault();
                if (владелец != null)
                {
                    владельцыпривозящиенасвойсклад.Add(владелец);
                };
            }

            foreach(Человек человек in владельцыпривозящиенасвойсклад)
            {
                tr = new TableRow();
                tc = new TableCell() { Text = человек.Фамилия, BorderStyle = BorderStyle.Solid, BorderWidth = 1 };
                tr.Cells.Add(tc);
                TableВладельцыПривозящиеНаСвойСклад.Rows.Add(tr);
            }
        }
 /// <summary>
 /// Проверяем генерацию <see cref="DetailVariableDef"/> из PseudoDetail.
 /// </summary>
 /// <param name="pseudoDetail">Псевдодетейл из linq.</param>
 /// <param name="detailVariableDef">Детейл из lcs</param>
 private void ComparePseudoDetailWithDetailVariableDef(PseudoDetail <Порода, Кошка> pseudoDetail, DetailVariableDef detailVariableDef)
 {
     CompareLcsWithLimitCommon(y => pseudoDetail.Any(), this.ldef.GetFunction(ldef.funcExist, detailVariableDef, true));
 }