public void FixChecksum(string filename = "model.xml")
        {
            using (var dac = new DacHacXml(_path))
            {
                var originXml = dac.GetXml("Origin.xml");

                var sourceXml = dac.GetStream(filename);

                var calculatedChecksum =
                    BitConverter.ToString(
                        (HashAlgorithm.Create(_checksumProvider)
                            .ComputeHash(sourceXml))).Replace("-", "");
                ;

                var reader = XmlReader.Create(new StringReader(originXml));
                reader.MoveToContent();

                while (reader.Read())
                {
                    if (reader.Name == "Checksum" && reader.GetAttribute("Uri") == string.Format("/{0}", filename))
                    {
                        var oldChecksum = reader.ReadInnerXml();

                        if (oldChecksum == calculatedChecksum)
                            return;

                        originXml = originXml.Replace(oldChecksum, calculatedChecksum);

                        dac.SetXml("Origin.xml", originXml);

                        return;
                    }
                }
            }
        }
Example #2
0
 public HeaderWriter(string dacpacPath, DacHacFactory factory, bool autoCommitEveryOperation = true)
 {
     _dacpacPath = dacpacPath;
     _autoCommitEveryOperation = autoCommitEveryOperation;
     _dac = factory.Build(_dacpacPath);
     _xml = _dac.GetXml("Model.xml");
 }
 public HeaderWriter(string dacpacPath, DacHacFactory factory, bool autoCommitEveryOperation = true)
 {
     _dacpacPath = dacpacPath;
     _autoCommitEveryOperation = autoCommitEveryOperation;
     _dac = factory.Build(_dacpacPath);
     _xml = _dac.GetXml("Model.xml");
 }
        public void Can_Write_Correct_Checksum()
        {
            var dacpac = new DacHacXml(".\\Test.dacpac");
            var stream = dacpac.GetStream("Model.xml");

            var checksum = HashAlgorithm.Create("System.Security.Cryptography.SHA256CryptoServiceProvider").ComputeHash(stream);

            dacpac.Close();

            var writer = new ModelChecksumWriter(".\\Test.dacpac");
            writer.FixChecksum();

            //assert wtf??
        }
        public List <CustomData> GetCustomData()
        {
            var dac = new DacHacXml(_dacPacPath);
            var xml = dac.GetXml("Model.xml");

            var reader = XmlReader.Create(new StringReader(xml));

            reader.MoveToContent();

            var        data = new List <CustomData>();
            CustomData currentCustomData = null;

            while (reader.Read())
            {
                if (reader.Name == "CustomData" && reader.NodeType == XmlNodeType.Element)
                {
                    var cat  = reader.GetAttribute("Category");
                    var type = reader.GetAttribute("Type");

                    currentCustomData = new CustomData(cat, type);
                    data.Add(currentCustomData);
                }

                if (reader.Name == "Metadata" && reader.NodeType == XmlNodeType.Element)
                {
                    var name  = reader.GetAttribute("Name");
                    var value = reader.GetAttribute("Value");

                    currentCustomData.AddMetadata(name, value);
                }

                if (reader.Name == "Header" && reader.NodeType == XmlNodeType.EndElement)
                {
                    break; //gone too far
                }
            }
            dac.Close();

            return(data);
        }
        public void FixChecksum(string filename = "model.xml")
        {
            using (var dac = new DacHacXml(_path))
            {
                var originXml = dac.GetXml("Origin.xml");

                var sourceXml = dac.GetStream(filename);

                var calculatedChecksum =
                    BitConverter.ToString(
                        (HashAlgorithm.Create(_checksumProvider)
                         .ComputeHash(sourceXml))).Replace("-", "");
                ;

                var reader = XmlReader.Create(new StringReader(originXml));
                reader.MoveToContent();


                while (reader.Read())
                {
                    if (reader.Name == "Checksum" && reader.GetAttribute("Uri") == string.Format("/{0}", filename))
                    {
                        var oldChecksum = reader.ReadInnerXml();

                        if (oldChecksum == calculatedChecksum)
                        {
                            return;
                        }

                        originXml = originXml.Replace(oldChecksum, calculatedChecksum);

                        dac.SetXml("Origin.xml", originXml);


                        return;
                    }
                }
            }
        }
        public List<CustomData> GetCustomData()
        {
            var dac = new DacHacXml(_dacPacPath);
            var xml = dac.GetXml("Model.xml");

            var reader = XmlReader.Create(new StringReader(xml));
            reader.MoveToContent();

            var data = new List<CustomData>();
            CustomData currentCustomData = null;

            while (reader.Read())
            {
                if (reader.Name == "CustomData" && reader.NodeType == XmlNodeType.Element)
                {
                    var cat = reader.GetAttribute("Category");
                    var type = reader.GetAttribute("Type");

                    currentCustomData = new CustomData(cat, type);
                    data.Add(currentCustomData);
                }

                if (reader.Name == "Metadata" && reader.NodeType == XmlNodeType.Element)
                {
                    var name = reader.GetAttribute("Name");
                    var value = reader.GetAttribute("Value");

                    currentCustomData.AddMetadata(name, value);
                }

                if (reader.Name == "Header" && reader.NodeType == XmlNodeType.EndElement)
                {
                    break; //gone too far
                }
            }
            dac.Close();

            return data;
        }