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(); } } } }