Beispiel #1
0
        protected void SaveItemsSQL()
        {
            Stopwatch watch = Stopwatch.StartNew();
            Dictionary <Serial, Item> items     = World.Items;
            List <Database.Item>      itemlist  = new List <Database.Item>();
            List <Database.ItemIndex> itemindex = new List <Database.ItemIndex>();

            int itemCount = items.Count;


            foreach (Item item in World.BuffItems)
            {
                MemoryStream  strim = new MemoryStream();
                GenericWriter bin   = new BinaryFileWriter(strim, true);
                if (item.Decays && item.Parent == null && item.Map != Map.Internal && (item.LastMoved + item.DecayTime) <= DateTime.UtcNow)
                {
                    this._decayQueue.Enqueue(item);
                }

                Database.Item t = new Database.Item();

                t.TypeID = item.m_TypeRef;
                t.Serial = item.Serial.Value;
                t.Id     = item.Serial.Value;

                t = item.Serialize(t);
                item.Serialize(bin);
                bin.Close();
                t.strim = Convert.ToBase64String(strim.ToArray());
                strim.Close();
                itemlist.Add(t);
                item.FreeCache();
            }

            for (int i = 0; i < World.m_ItemTypes.Count; ++i)
            {
                Database.ItemIndex a = new Database.ItemIndex();

                a.ItemTypes = (World.m_ItemTypes[i].FullName);
                a.Id        = i;

                itemindex.Add(a);
            }

            using (Database.UODataContext writedb = new Database.UODataContext(Core.SQLConnect))
            {
                Database.LinqExtension.Truncate(writedb.ItemIndexes); //drop items table
                Database.LinqExtension.Truncate(writedb.Items);       //drop items table
                writedb.BulkInsertAll(itemindex);                     //bulk insert itemindex
                writedb.BulkInsertAll(itemlist);                      //bulk insert items
            }

            watch.Stop();
            Console.WriteLine("SQL Item data created: " + watch.Elapsed.TotalSeconds);
        }
Beispiel #2
0
        public dynamic ToDatabase()
        {
            var result = new Database.Item();

            return(result);
        }