コード例 #1
0
        private bag CreateBagNode(DirectedReference reference, key keyNode, string cascade, collectionFetchMode colFetchMode, string lazyString, bool inverse)
        {
            var lazy = (collectionLazy)Enum.Parse(typeof(collectionLazy), lazyString.ToString().Replace("_", ""), true);

            bag bagNode = new bag();

            bagNode.name    = reference.FromName;
            bagNode.key     = keyNode;
            bagNode.cascade = cascade == "none" ? null : cascade;
            bagNode.inverse = inverse;

            bagNode.fetchSpecified = colFetchMode != collectionFetchMode.select;
            bagNode.fetch          = colFetchMode;
            bagNode.lazySpecified  = lazy != collectionLazy.@true;
            bagNode.lazy           = (collectionLazy)Enum.Parse(typeof(collectionLazy), lazy.ToString().Replace("_", ""), true);

            var sqlWhereClause = NHCollections.GetSqlWhereClause(reference);

            if (string.IsNullOrEmpty(sqlWhereClause) == false)
            {
                bagNode.where = sqlWhereClause;
            }

            return(bagNode);
        }
コード例 #2
0
        /// <summary>
        /// Gets the ManyToAny of the Bag if it exists.
        /// </summary>
        /// <param name="theBag"></param>
        /// <returns></returns>
        public static manytoany ManyToAny(this bag theBag)
        {
            if (theBag.Item != null && theBag.Item is manytoany)
            {
                return((manytoany)theBag.Item);
            }

            return(null);
        }
コード例 #3
0
        /// <summary>
        /// Gets the CompositeElement of the set if it exists.
        /// </summary>
        /// <param name="theBag"></param>
        /// <returns></returns>
        public static compositeelement CompositeElement(this bag theBag)
        {
            if (theBag.Item != null && theBag.Item is compositeelement)
            {
                return((compositeelement)theBag.Item);
            }

            return(null);
        }
コード例 #4
0
        /// <summary>
        /// Gets the OneToMany of the Bag if it exists.
        /// </summary>
        /// <param name="theBag"></param>
        /// <returns></returns>
        public static onetomany OneToMany(this bag theBag)
        {
            if (theBag.Item != null && theBag.Item is onetomany)
            {
                return((onetomany)theBag.Item);
            }

            return(null);
        }
コード例 #5
0
        /// <summary>
        /// Gets the Element of the Bag if it exists.
        /// </summary>
        /// <param name="theBag"></param>
        /// <returns></returns>
        public static element Element(this bag theBag)
        {
            if (theBag.Item != null && theBag.Item is element)
            {
                return((element)theBag.Item);
            }

            return(null);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: Andriy68/Andriy
    static void Main(string[] args)
    {
        long capacity = long.Parse(Console.ReadLine());
        var  input    = Console.ReadLine().Split(' ');
        var  bag      = new bag(capacity);

        for (int i = 0; i < input.Length; i += 2)
        {
            string key   = input[i];
            long   value = long.Parse(input[i + 1]);

            InsertItem(key, value, bag);
        }

        Console.WriteLine(bag.ToString());
    }
コード例 #7
0
ファイル: Program.cs プロジェクト: Andriy68/Andriy
 private static void InsertItem(string key, long value, bag bag)
 {
     if (key.Length == 3)
     {
         cash cash = new cash(key, value);
         bag.AddCashItem(cash);
     }
     else if (key.Length >= 4 && key.ToLower().EndsWith("gem"))
     {
         gem gem = new gem(key, value);
         bag.AddGemItem(gem);
     }
     else if (key.ToLower().Equals("gold"))
     {
         gold gold = new gold(key, value);
         bag.AddGoldItem(gold);
     }
 }
コード例 #8
0
 // Use this for initialization
 void Start()
 {
     _bagAbsorb = gameObject.GetComponent <bagAbsorb>();
     _bag       = gameObject.GetComponent <bag>();
 }
コード例 #9
0
        //[HttpGet]
        //public ActionResult Add()
        //{
        //    ViewBag.Ifboss = Session["Ifboss"].ToString();
        //    ViewBag.Msid = Session["Msid"].ToString();
        //    bag col = new bag();
        //    return View(col);
        //}

        //[HttpPost]
        public ActionResult add(bag col, string sysflag, int?page, string orderdata, string orderdata1)
        {
            ModelState.Clear();
            page         = ((!page.HasValue || page < 1) ? 1 : page);
            ViewBag.page = page;
            if (string.IsNullOrWhiteSpace(orderdata))
            {
                orderdata = "bgid";
            }

            if (string.IsNullOrWhiteSpace(orderdata1))
            {
                orderdata1 = "desc";
            }
            ViewBag.orderdata  = orderdata;
            ViewBag.orderdata1 = orderdata1;
            string qbgtitle = "", qbgid = "";

            if (!string.IsNullOrWhiteSpace(Request["qbgtitle"]))
            {
                qbgtitle         = Request["qbgtitle"].Trim();
                ViewBag.qbgtitle = qbgtitle;
            }
            if (!string.IsNullOrWhiteSpace(Request["qbgid"]))
            {
                qbgid         = Request["qbgid"].Trim();
                ViewBag.qbgid = qbgid;
            }

            if (sysflag != "A")
            {
                bag newcol = new bag();
                return(View(newcol));
            }
            else
            {
                if (!ModelState.IsValid)
                {
                    return(View(col));
                }
                else
                {
                    Aitag.Models.NDcommon dbobj = new Aitag.Models.NDcommon();

                    /*
                     * SqlConnection conn = dbobj.get_conn("Aitag_DBContext");
                     * SqlDataReader dr;
                     * SqlCommand sqlsmd = new SqlCommand();
                     * sqlsmd.Connection = conn;
                     * string sqlstr = "select * from bag where 1<>1";
                     * sqlsmd.CommandText = sqlstr;
                     * dr = sqlsmd.ExecuteReader();
                     *
                     * if (dr.Read())
                     * {
                     *
                     *  ModelState.AddModelError("", "no");
                     *  return View(col);
                     * }
                     * dr.Close();
                     * dr.Dispose();
                     * sqlsmd.Dispose();
                     * conn.Close();
                     * conn.Dispose();
                     */

                    col.comid  = Session["comid"].ToString();
                    col.bmodid = Session["tempid"].ToString();
                    //col.badddate = DateTime.Now;
                    col.bmoddate = DateTime.Now;
                    using (Aitag_DBContext con = new Aitag_DBContext())
                    {
                        con.bag.Add(col);
                        con.SaveChanges();

                        //系統LOG檔 //================================================= //
                        SqlConnection sysconn    = dbobj.get_conn("Aitag_DBContext");
                        string        sysrealsid = Request["sysrealsid"].ToString();
                        string        syssubname = dbobj.get_sysmenuname(sysconn, sysrealsid, "2");
                        string        sysnote    = "包裝名稱:" + col.bgtitle;
                        dbobj.systemlog(sysconn, syssubname, sysnote, Session["tempid"].ToString(), Session["sldate"].ToString(), Session["sfip"].ToString(), sysflag);
                        sysconn.Close();
                        sysconn.Dispose();
                        //=================================================
                    }
                    string tmpform = "";
                    tmpform  = "<body onload=qfr1.submit();>";
                    tmpform += "<form name='qfr1' action='/bag/List' method='post'>";
                    tmpform += "<input type=hidden name='sysflag' id='sysflag' value='" + sysflag + "'>";
                    tmpform += "<input type=hidden name='page' id='page' value='" + page + "'>";
                    tmpform += "<input type=hidden name='orderdata' id='orderdata' value='" + orderdata + "'>";
                    tmpform += "<input type=hidden name='orderdata1' id='orderdata1' value='" + orderdata1 + "'>";
                    tmpform += "<input type=hidden id='qbgtitle' name='qbgtitle' value='" + qbgtitle + "'>";
                    tmpform += "<input type=hidden id='qbgid' name='qbgid' value='" + qbgid + "'>";
                    tmpform += "</form>";
                    tmpform += "</body>";


                    return(new ContentResult()
                    {
                        Content = @"" + tmpform
                    });
                    // return RedirectToAction("List");
                }
            }
        }
コード例 #10
0
        public ActionResult Edit(bag chks, string sysflag, int?page, string orderdata, string orderdata1)
        {
            ModelState.Clear();
            page         = ((!page.HasValue || page < 1) ? 1 : page);
            ViewBag.page = page;
            if (string.IsNullOrWhiteSpace(orderdata))
            {
                orderdata = "bgid";
            }

            if (string.IsNullOrWhiteSpace(orderdata1))
            {
                orderdata1 = "desc";
            }
            ViewBag.orderdata  = orderdata;
            ViewBag.orderdata1 = orderdata1;
            string qbgtitle = "", qbgid = "";

            if (!string.IsNullOrWhiteSpace(Request["qbgtitle"]))
            {
                qbgtitle         = Request["qbgtitle"].Trim();
                ViewBag.qbgtitle = qbgtitle;
            }
            if (!string.IsNullOrWhiteSpace(Request["qbgid"]))
            {
                qbgid         = Request["qbgid"].Trim();
                ViewBag.qbgid = qbgid;
            }

            if (sysflag != "E")
            {
                using (Aitag_DBContext con = new Aitag_DBContext())
                {
                    var data  = con.bag.Where(r => r.bgid == chks.bgid).FirstOrDefault();
                    bag ebags = con.bag.Find(chks.bgid);
                    if (ebags == null)
                    {
                        return(HttpNotFound());
                    }
                    return(View(ebags));
                }
            }
            else
            {
                if (!ModelState.IsValid)
                {
                    return(View(chks));
                }
                else
                {
                    //string oldmsid = Request["oldmsid"];

                    using (Aitag_DBContext con = new Aitag_DBContext())
                    {
                        NDcommon dbobj = new NDcommon();
                        //chks.comid = Session["comid"].ToString();
                        chks.bmodid           = Session["tempid"].ToString();
                        chks.bmoddate         = DateTime.Now;
                        con.Entry(chks).State = EntityState.Modified;
                        con.SaveChanges();


                        //系統LOG檔
                        //================================================= //
                        SqlConnection sysconn    = dbobj.get_conn("Aitag_DBContext");
                        string        sysrealsid = Request["sysrealsid"].ToString();
                        string        syssubname = dbobj.get_sysmenuname(sysconn, sysrealsid, "2");
                        string        sysnote    = "包裝名稱:" + chks.bgtitle;
                        dbobj.systemlog(sysconn, syssubname, sysnote, Session["tempid"].ToString(), Session["sldate"].ToString(), Session["sfip"].ToString(), sysflag);
                        sysconn.Close();
                        sysconn.Dispose();
                        //=================================================

                        string tmpform = "";
                        tmpform  = "<body onload=qfr1.submit();>";
                        tmpform += "<form name='qfr1' action='/bag/List' method='post'>";
                        tmpform += "<input type=hidden name='sysflag' id='sysflag' value='" + sysflag + "'>";
                        tmpform += "<input type=hidden name='page' id='page' value='" + page + "'>";
                        tmpform += "<input type=hidden name='orderdata' id='orderdata' value='" + orderdata + "'>";
                        tmpform += "<input type=hidden name='orderdata1' id='orderdata1' value='" + orderdata1 + "'>";
                        tmpform += "<input type=hidden id='qbgtitle' name='qbgtitle' value='" + qbgtitle + "'>";
                        tmpform += "<input type=hidden id='qbgid' name='qbgid' value='" + qbgid + "'>";
                        tmpform += "</form>";
                        tmpform += "</body>";


                        return(new ContentResult()
                        {
                            Content = @"" + tmpform
                        });
                        //return RedirectToAction("List");
                    }
                }
            }
        }
コード例 #11
0
        private void ProcessManyToManyReference(
            Entity entity,
            DirectedReference directedReference,
            Action <object> addItem,
            Dictionary <ITable, int> manyToManySameTableProcessingCounts,
            string collectionCascade,
            string lazy,
            string orderByClause,
            bool inverse)
        {
            if (directedReference.FromEndEnabled == false)
            {
                return;
            }

            ITable referenceMappedTable = directedReference.Reference.MappedTable();

            ITable      fromPrimaryMappedTable = EntityMapper.GetPrimaryTable(entity);
            ITable      toPrimaryMappedTable   = EntityMapper.GetPrimaryTable(directedReference.ToEntity);
            Cardinality cardinalityPrimary;
            Cardinality cardinalityForeign;
            IKey        mainKey;
            IKey        associationKey;
            ITable      associationTable = entity.GetAssociationTable(directedReference.ToEntity, out cardinalityPrimary, out cardinalityForeign, out mainKey, out associationKey);

            key            keyNode          = new key();
            List <IColumn> fromInPrimaryKey = new List <IColumn>();
            List <IColumn> toInPrimaryKey   = new List <IColumn>();

            if (fromPrimaryMappedTable == toPrimaryMappedTable)
            {
                // This many-to-many relationship is to the same table
                if (manyToManySameTableProcessingCounts.ContainsKey(toPrimaryMappedTable))
                {
                    int index = manyToManySameTableProcessingCounts[toPrimaryMappedTable];
                    index++;
                    fromInPrimaryKey.AddRange(referenceMappedTable.Relationships.Where(t => t.PrimaryTable == fromPrimaryMappedTable).ElementAt(index).PrimaryKey.Columns);
                    toInPrimaryKey.AddRange(referenceMappedTable.Relationships.Where(t => t.PrimaryTable == toPrimaryMappedTable).ElementAt(index).ForeignKey.Columns);
                    manyToManySameTableProcessingCounts[toPrimaryMappedTable] = index;
                }
                else
                {
                    fromInPrimaryKey.AddRange(referenceMappedTable.Relationships.Where(t => t.PrimaryTable == fromPrimaryMappedTable).ElementAt(0).PrimaryKey.Columns);
                    toInPrimaryKey.AddRange(referenceMappedTable.Relationships.Where(t => t.PrimaryTable == toPrimaryMappedTable).ElementAt(0).ForeignKey.Columns);
                    manyToManySameTableProcessingCounts.Add(toPrimaryMappedTable, 0);
                }
            }
            else
            {
                foreach (var coll in referenceMappedTable.Relationships.Where(t => t.PrimaryTable == fromPrimaryMappedTable).Select(r => r.ForeignKey.Columns))
                {
                    foreach (var c in coll)
                    {
                        fromInPrimaryKey.Add(c);
                    }
                }

                foreach (var coll in referenceMappedTable.Relationships.Where(t => t.PrimaryTable == toPrimaryMappedTable).Select(r => r.ForeignKey.Columns))
                {
                    foreach (var c in coll)
                    {
                        toInPrimaryKey.Add(c);
                    }
                }
            }

            if (fromInPrimaryKey.Count() == 1)
            {
                keyNode.column1 = fromInPrimaryKey.First().Name.BackTick();
            }
            else
            {
                foreach (var columnNode in GetColumnNodes(fromInPrimaryKey))
                {
                    keyNode.AddColumn(columnNode);
                }
            }

            manytomany manyToManyNode = new manytomany();

            manyToManyNode.@class = directedReference.ToEntity.Name;

            if (toInPrimaryKey.Count() == 1)
            {
                manyToManyNode.column = toInPrimaryKey.First().Name.BackTick();
            }
            else
            {
                foreach (var columnNode in GetColumnNodes(toInPrimaryKey))
                {
                    keyNode.AddColumn(columnNode);
                }
            }

            collectionFetchMode collFetchMode;

            if (directedReference.Entity1IsFromEnd)
            {
                collFetchMode = (collectionFetchMode)Enum.Parse(typeof(collectionFetchMode), directedReference.Reference.GetReferenceEnd1CollectionFetchMode().ToString(), true);
            }
            else
            {
                collFetchMode = (collectionFetchMode)Enum.Parse(typeof(collectionFetchMode), directedReference.Reference.GetReferenceEnd2CollectionFetchMode().ToString(), true);
            }

            AssociationType type = NHCollections.GetAssociationType(directedReference);

            switch (type)
            {
            case AssociationType.None:
                Log.WarnFormat("No association type was set on reference {0} for the end {1}. This is usually an error.", directedReference.Reference.Name, directedReference.Entity1IsFromEnd ? "One" : "Two");
                return;

            case AssociationType.Set:
                set setNode = CreateSetNode(directedReference, keyNode, collectionCascade, collFetchMode, lazy, inverse);
                setNode.table = referenceMappedTable.Name.BackTick();
                setNode.Item  = manyToManyNode;

                if (orderByClause.Length > 0)
                {
                    setNode.orderby = orderByClause;
                }

                addItem(setNode);
                break;

            case AssociationType.Bag:
                bag bagNode = CreateBagNode(directedReference, keyNode, collectionCascade, collFetchMode, lazy, inverse);
                bagNode.table = referenceMappedTable.Name.BackTick();
                bagNode.Item  = manyToManyNode;

                if (orderByClause.Length > 0)
                {
                    bagNode.orderby = orderByClause;
                }

                addItem(bagNode);
                break;

            case AssociationType.Map:
                map mapNode = CreateMapNode(directedReference, keyNode, collectionCascade, collFetchMode, lazy, inverse);
                mapNode.table = referenceMappedTable.Name.BackTick();
                mapNode.Item  = new index
                {
                    column1 = NHCollections.GetIndexColumnName(directedReference),
                    type    = NHCollections.GetIndexColumnTypeName(directedReference, toPrimaryMappedTable /*fromPrimaryMappedTable*/)
                };
                mapNode.Item1 = manyToManyNode;

                if (orderByClause.Length > 0)
                {
                    mapNode.orderby = orderByClause;
                }

                addItem(mapNode);
                break;

            case AssociationType.List:
                list listNode = CreateListNode(directedReference, keyNode, collectionCascade, collFetchMode, lazy, inverse);
                listNode.table = referenceMappedTable.Name.BackTick();
                listNode.Item  = new index
                {
                    column1 = NHCollections.GetIndexColumnName(directedReference),
                };
                listNode.Item1 = manyToManyNode;

                if (orderByClause.Length > 0)
                {
                    listNode.orderby = orderByClause;
                }

                addItem(listNode);
                break;

            // case AssociationType.IDBag:
            //     throw new NotImplementedException(
            //         string.Format("Have not implemented {0} association type for Many To Many relationships", type));
            default:
                throw new NotImplementedException("AssociationType not handled yet: " + type.ToString());
            }
        }