コード例 #1
0
        public void UpdateDB()
        {
            GraphDB db = new GraphDB();
            //get the path to the folder with all the xml files
            var pathtoproject = AppDomain.CurrentDomain.BaseDirectory;

            foreach (string file in Directory.EnumerateFiles(Path.Combine(pathtoproject, inputfolder), "*.xml"))
            {
                //use the datacontractserialize to deserialize the xml content
                // check the database and update changed values or insert values if they dont exist
                DataContractSerializer deserializer = new DataContractSerializer(typeof(Node));
                using (FileStream fs = new FileStream(file, FileMode.Open))
                {
                    using (
                        var reader = XmlDictionaryReader.CreateTextReader(fs,
                                                                          new XmlDictionaryReaderQuotas()))
                    {
                        var  node = (Node)deserializer.ReadObject(reader, true);
                        bool changed;
                        if (changed = !db.Nodes.Any(x => x.Id == node.Id && x.label.Equals(node.Label)))
                        {
                            db.Nodes.RemoveRange(db.Nodes.Where(x => x.Id == node.Id || x.label.Equals(node.Label)));
                            db.Nodes.Add(new Nodes()
                            {
                                Id = node.Id, label = node.Label
                            });
                        }

                        foreach (var id in node.AdjacentNodes)
                        {
                            if (!changed)
                            {
                                db.Edges.RemoveRange(db.Edges.Where(x => x.FromNode == node.Id));
                            }
                            if (!db.Edges.Any(x => x.FromNode == node.Id && x.ToNode == id))
                            {
                                db.Edges.Add(new Edges()
                                {
                                    FromNode = node.Id, ToNode = id, Weight = 1
                                });
                            }
                        }
                        db.SaveChanges();
                    }
                }
            }
        }