Ejemplo n.º 1
0
    public EntityTypeMapping(IEntityType entityType)
    {
        Name       = entityType.Name;
        TableName  = entityType.GetTableName();
        PrimaryKey = entityType.FindPrimaryKey() !.ToDebugString(MetadataDebugStringOptions.SingleLineDefault);

        Properties.AddRange(
            entityType.GetProperties()
            .Select(p => p.ToDebugString(MetadataDebugStringOptions.SingleLineDefault)));

        Indexes.AddRange(
            entityType.GetIndexes().Select(i => $"{i.Properties.Format()} {(i.IsUnique ? "Unique" : "")}"));

        FKs.AddRange(
            entityType.GetForeignKeys().Select(f => f.ToDebugString(MetadataDebugStringOptions.SingleLineDefault)));

        Navigations.AddRange(
            entityType.GetNavigations().Select(n => n.ToDebugString(MetadataDebugStringOptions.SingleLineDefault)));

        SkipNavigations.AddRange(
            entityType.GetSkipNavigations().Select(n => n.ToDebugString(MetadataDebugStringOptions.SingleLineDefault)));
    }
Ejemplo n.º 2
0
        private static void Test()
        {
            var cmd = Util.Adapter;
            MEZUNBOL mezunbol = cmd.SelectSingle<MEZUNBOL>();

            FK<MEZUNBOL> mezunFK = new FK<MEZUNBOL>(mezunbol, Util.Adapter);

            mezunFK.Join<SICIL>()
                .On(m => m.MEZUNBOLK, s => s.MEZUNBOLK)
                .LoadChilds(m => m.SICILs);

            PERSONELTIP personelTip = cmd.SelectSingle<PERSONELTIP>();
            FK<PERSONELTIP> personekTipFK = new FK<PERSONELTIP>(personelTip, Util.Adapter);

            personekTipFK.Join<SICIL>().On(p => p.PERSONELTIPK, s => s.PERSONELTIPK).LoadChilds(p => p.SICILs);



            SICIL sicil = cmd.SelectSingle<SICIL>();

            cmd.Upsert(sicil, new Expression<Func<SICIL, object>>[] { s => s.ADI, s => s.SOYADI }, null);

            FK<SICIL> sicilFK = new FK<SICIL>(sicil, cmd);

            Stopwatch bench = Stopwatch.StartNew();

            sicilFK.Join<PERSONELTIP>().On(s => s.PERSONELTIPK, p => p.PERSONELTIPK).Set(s => s.PERSONELTIP)
                .Join<MEZUNBOL>().On(s => s.MEZUNBOLK, m => m.MEZUNBOLK).Set(s => s.MEZUNBOL);
          
            FK<PERSONELTIP> inner = new FK<PERSONELTIP>(sicil.PERSONELTIP, cmd);
            inner.Join<SICIL>().On(p => p.PERSONELTIPK, s => s.PERSONELTIPK).LoadChilds(p => p.SICILs);

            bench.Stop();

            Console.WriteLine(bench.ElapsedMilliseconds);

            var sicilList = cmd.Select<SICIL>();

            bench = Stopwatch.StartNew();

            for (int j = 0; j < 100; ++j)
            {
                FKs<SICIL> fks = new FKs<SICIL>(sicilList, cmd)
                    .Join<PERSONELTIP>()
                    .On(s => s.PERSONELTIPK, p => p.PERSONELTIPK)
                    .Set(s => s.PERSONELTIP)

                    .Join<MEZUNBOL>()
                    .On(s => s.MEZUNBOLK, m => m.MEZUNBOLK)
                    .Set(s => s.MEZUNBOL);
            }

            bench.Stop();

            Console.WriteLine(bench.ElapsedMilliseconds);

            // fk.Join(m => m.SICILs, s => s.MEZUNBOLK);
            //fk.Join(mezunbol, m => m.SICILs, s => s.MEZUNBOLK);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// M:N mappings in the database as M2NMapping objects
        /// </summary>
        /// <returns></returns>
        public List <M2NMapping> FindMappings()
        {
            List <M2NMapping> res        = new List <M2NMapping>();
            List <string>     twoColTabs = TwoColumnTables();
            List <List <FK> > twoColFKs  = new List <List <FK> >(from table in twoColTabs where FKs.ContainsKey(table) select FKs[table]);

            foreach (List <FK> currTabFKs in twoColFKs)
            {
                if (currTabFKs.Count == 2)
                {
                    // cannot say which table will use the mapping field (the one with more data)
                    //  ASK
                    res.Add(new M2NMapping(currTabFKs[0].refTable, currTabFKs[0].refColumn, currTabFKs[1].refTable,
                                           currTabFKs[1].refColumn, currTabFKs[0].myTable, currTabFKs[0].refColumn,
                                           currTabFKs[0].myColumn, currTabFKs[1].myColumn));

                    res.Add(new M2NMapping(currTabFKs[1].refTable, currTabFKs[1].refColumn, currTabFKs[0].refTable,
                                           currTabFKs[0].refColumn, currTabFKs[1].myTable, currTabFKs[1].refColumn,
                                           currTabFKs[1].myColumn, currTabFKs[0].myColumn));
                }
            }
            return(res);
        }
Ejemplo n.º 4
0
        public virtual void ToUControl(UControl container, WC.GridViewCommandEventHandler handler, WC.GridViewPageEventHandler pagingHandler, WC.GridViewSortEventHandler sortingHandler, string navigateUrl = null)
        {
            // take care of all the dependant controls as well
            WC.GridView grid = new WC.GridView();


            string[] DataKeyNames = PKColNames.ToArray();

            if (CE.GlobalState == GlobalState.Administer)
            {
                // one of our datakeys may have been a FK and its value is now the representative field of the
                // foreign table, not our key, but in such cases the key will be stored in a prefixed column.
                for (int i = 0; i < DataKeyNames.Length; i++)
                {
                    FK fk = FKs.Where(x => x.myColumn == DataKeyNames[i]).FirstOrDefault();
                    if (fk is FK)
                    {
                        DataKeyNames[i] = CC.TABLE_COLUMN_REAL_VALUE_PREFIX + DataKeyNames[i];
                    }
                }
            }

            grid.DataKeyNames = DataKeyNames;


            grid.AutoGenerateColumns = false;

            WC.TemplateField tf = new WC.TemplateField();
            tf.HeaderTemplate = new SummaryGridCommandColumn(WC.ListItemType.Header);
            tf.FooterTemplate = new SummaryGridCommandColumn(WC.ListItemType.Footer);
            tf.ItemTemplate   = new SummaryGridCommandColumn(WC.ListItemType.Item, actions);
            grid.Columns.Add(tf);


            foreach (string col in displayColumns)
            {
                WC.BoundField bf = new WC.BoundField();
                bf.DataField      = col;
                bf.HeaderText     = col + " [-]";
                bf.SortExpression = col;

                grid.Columns.Add(bf);
            }
            // must contain the whole PK even if it is not displayed - for the navigator
            // DataKeyNames are the real ones - including "_" prefixing
            foreach (string col in DataKeyNames)
            {
                if (displayColumns.Contains(col))
                {
                    continue;
                }
                WC.BoundField bf = new WC.BoundField();
                bf.DataField = col;
                bf.Visible   = false;
                grid.Columns.Add(bf);
                bf.HeaderText = col;
            }

            grid.AllowSorting = true;

            //PBPR

            container.Controls.Add(grid);

            grid.PagerStyle.CssClass = "navTablePaging";
            grid.CssClass            = "navTable";
            grid.AllowPaging         = true;
            grid.PageSize            = 25;

            grid.PageIndexChanging += pagingHandler;
            grid.Sorting           += sortingHandler;

            grid.DataSource = data.DefaultView;
            grid.DataBind();

            //PBPR

            grid.RowCommand += handler;
            grid.ID          = "Control" + controlId;
        }
Ejemplo n.º 5
0
 /// <summary>
 /// finds the hierarchical relation within table only if valid for use in a NavTree
 /// </summary>
 /// <returns></returns>
 public List <FK> SelfRefFKs()
 {
     return(FKs.SelectMany(kv => from fk in kv.Value where fk.refTable == fk.myTable select fk).ToList <FK>());
 }