Added SQL Interface to NAV Object table with support for serialization. Tested this.
This commit is contained in:
		@@ -54,6 +54,8 @@
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
    <Reference Include="System.Data.Linq" />
 | 
			
		||||
    <Reference Include="System.Runtime.Serialization" />
 | 
			
		||||
    <Reference Include="System.Xml.Linq" />
 | 
			
		||||
    <Reference Include="System.Data.DataSetExtensions" />
 | 
			
		||||
    <Reference Include="Microsoft.CSharp" />
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,12 @@ using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using log4net;
 | 
			
		||||
using System.Runtime.Serialization;
 | 
			
		||||
using System.Xml;
 | 
			
		||||
using System.Data.Linq;
 | 
			
		||||
using NavScm;
 | 
			
		||||
using NavScm.NavInterface;
 | 
			
		||||
using System.IO;
 | 
			
		||||
 | 
			
		||||
namespace NavScm.TestHost
 | 
			
		||||
{
 | 
			
		||||
@@ -17,6 +23,47 @@ namespace NavScm.TestHost
 | 
			
		||||
 | 
			
		||||
            log.Info("Starting up...");
 | 
			
		||||
 | 
			
		||||
            var context = new NavSQLDataContext("Data Source=tbrt-sql-erp-01;Initial Catalog=\"TERRABIT 2015 DEV\";Integrated Security=True");
 | 
			
		||||
            var NavSqlObjects = context.NavObject;
 | 
			
		||||
 | 
			
		||||
            log.InfoFormat("{0} total entries in NavSqlObjects", NavSqlObjects.Count());
 | 
			
		||||
 | 
			
		||||
            var query = from sql in NavSqlObjects
 | 
			
		||||
                        where sql.Modified == 1
 | 
			
		||||
                        select sql;
 | 
			
		||||
 | 
			
		||||
            int count = query.Count();
 | 
			
		||||
 | 
			
		||||
            log.InfoFormat("{0} modified objects detected, reading them...", count);
 | 
			
		||||
 | 
			
		||||
            var foundObjects = new Dictionary<string, NavObject>(count);
 | 
			
		||||
 | 
			
		||||
            int i = 1;
 | 
			
		||||
            foreach (NavObject o in query)
 | 
			
		||||
            {
 | 
			
		||||
                log.DebugFormat("Row {6}/{7}: Type {0}, ID {1}, Name {2}, Modified {3} {4}, Version {5}",
 | 
			
		||||
                    o.Type, o.ID, o.Name, o.Date.ToShortDateString(), o.Time.ToShortTimeString(), o.Version_List, i++, count);
 | 
			
		||||
 | 
			
		||||
                foundObjects.Add(String.Format("{0}.{1}", o.Type, o.ID), o);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            log.InfoFormat("Collection has {0} entries, writing to cache.xml", foundObjects.Count);
 | 
			
		||||
 | 
			
		||||
            FileStream writer = new FileStream("cache.xml", FileMode.Create);
 | 
			
		||||
            DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, NavObject>));
 | 
			
		||||
            serializer.WriteObject(writer, foundObjects);
 | 
			
		||||
            writer.Close();
 | 
			
		||||
 | 
			
		||||
            log.Info("Reloading these entries");
 | 
			
		||||
            FileStream reader = new FileStream("cache.xml", FileMode.Open);
 | 
			
		||||
            XmlDictionaryReader xmlReader = XmlDictionaryReader.CreateTextReader(reader, new XmlDictionaryReaderQuotas());
 | 
			
		||||
            var loadedObjects = (Dictionary<string, NavObject>)serializer.ReadObject(xmlReader, true);
 | 
			
		||||
 | 
			
		||||
            log.Debug("Dumping sample object 1.82004");
 | 
			
		||||
 | 
			
		||||
            NavObject o2 = loadedObjects["1.82004"];
 | 
			
		||||
            log.DebugFormat("Type {0}, ID {1}, Name {2}, Modified {3} {4}, Version {5}",
 | 
			
		||||
                o2.Type, o2.ID, o2.Name, o2.Date.ToShortDateString(), o2.Time.ToShortTimeString(), o2.Version_List);
 | 
			
		||||
 | 
			
		||||
            log.Info("Shutting down...");
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user