Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using _01.EF_Mappings;
- using System.Xml.Linq;
- using System.Data;
- using System.Data.SqlClient;
- using System.Xml;
- using System.Xml.XPath;
- namespace _04.Import_Rivers_From_XML
- {
- public class Import_Rivers_From_XML
- {
- static void Main(string[] args)
- {
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.Load("rivers.xml");
- string xPath = "/rivers/river";
- // var riversDB = new River();
- XmlNodeList riverList = xmlDoc.SelectNodes(xPath);
- var contextRivers = new GeographyEntities();
- foreach (XmlNode river in riverList)
- {
- //mandatory
- string name = river.FirstChild.InnerText;
- int length = Int32.Parse(river["length"].InnerText);
- string outflow = river["outflow"].InnerText;
- int? drainageArea = null;
- int? averageDischarge = null;
- string countryRiver = null;
- //optional
- if (river["drainage-area"] != null)
- {
- drainageArea = Int32.Parse(river["drainage-area"].InnerText);
- }
- if (river["average-discharge"] != null)
- {
- averageDischarge = Int32.Parse(river["average-discharge"].InnerText);
- }
- var riversDB = new River()
- {
- RiverName = name,
- Length = length,
- Outflow = outflow,
- DrainageArea = drainageArea,
- AverageDischarge = averageDischarge,
- };
- var context = new GeographyEntities();
- context.Rivers.Add(riversDB);
- context.SaveChanges();
- Console.WriteLine("Rivers added!");
- //Error inserting..................................
- foreach (XmlNode countryName in river["countries"])
- {
- countryRiver = countryName.InnerText;
- var addCountry = contextRivers.Countries
- .FirstOrDefault(c => c.CountryName == countryRiver);
- riversDB.Countries.Add(addCountry);
- context.Rivers.Add(riversDB);
- }
- }
- var rivers = contextRivers.Rivers
- .OrderByDescending(r => r.Length)
- .Select(r => new
- {
- riverName = r.RiverName,
- countries = r.Countries
- .OrderBy(c => c.CountryName)
- .Select(c => new
- {
- c.CountryName
- })
- }).ToList();
- foreach (var item in rivers)
- {
- Console.WriteLine(item.riverName);
- foreach (var country in item.countries)
- {
- Console.WriteLine(country);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement