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); }
public dynamic ToDatabase() { var result = new Database.Item(); return(result); }