private void XmlToDb(XmlNode xmlDocument) { using (var isolatedContext = new HotelsModels.HotelDbContext()) { var hotelXml = xmlDocument.SelectSingleNode("Hotel"); var hotel = new HotelsModels.Hotel(); hotel.id = hotelXml.Attributes["id"].InnerText; hotel.name = hotelXml.Attributes["name"].InnerText; hotel.category = hotelXml.Attributes["category"].InnerText; /* * if (isolatedContext.Hotels.Count(bs => bs.id == hotel.id) != 0) * { * throw new Exception("тoзи хотел (ID " + hotel.id + ") вече е в БД"); * } */ hotel.website = hotelXml.SelectSingleNode("website").InnerText; hotel.description = hotelXml.SelectSingleNode("description").InnerText; hotel.facilities = hotelXml.SelectSingleNode("facilities").InnerText; foreach (XmlNode premiseXml in hotelXml.SelectNodes("premises/premise")) { var premise = new HotelsModels.Premise(); premise.premise_id = premiseXml.Attributes["premise_id"].InnerText; premise.type = premiseXml.SelectSingleNode("type").InnerText; var priceXml = premiseXml.SelectSingleNode("price"); premise.price = Decimal.Parse(priceXml.InnerText, CultureInfo.InvariantCulture); premise.currency = priceXml.Attributes["currency"].InnerText; premise.furniture = premiseXml.SelectSingleNode("furniture").InnerText; hotel.Premises.Add(premise); } foreach (XmlNode offerXml in hotelXml.SelectNodes("offers/offer")) { var offer = new HotelsModels.Offer(); offer.offer_id = offerXml.Attributes["offer_id"].InnerText; offer.type_offer = offerXml.SelectSingleNode("type_offer").InnerText; if (offerXml.SelectSingleNode("descr_offer") != null) { offer.descr_offer = offerXml.SelectSingleNode("descr_offer").InnerText; } var regPriceXml = offerXml.SelectSingleNode("regular_price"); offer.regular_price = Decimal.Parse(regPriceXml.InnerText, CultureInfo.InvariantCulture); offer.currency_regular = regPriceXml.Attributes["currency_regular"].InnerText; var promoPriceXml = offerXml.SelectSingleNode("promotional_price"); offer.promotional_price = Decimal.Parse(promoPriceXml.InnerText, CultureInfo.InvariantCulture); offer.currency_promotional = promoPriceXml.Attributes["currency_promotional"].InnerText; hotel.Offers.Add(offer); } foreach (XmlNode employeeXml in hotelXml.SelectNodes("employees/employee")) { var employee = new HotelsModels.Employee(); employee.employee_id = employeeXml.Attributes["employee_id"].InnerText; employee.first_name = employeeXml.SelectSingleNode("first_name").InnerText; employee.last_name = employeeXml.SelectSingleNode("last_name").InnerText; employee.position = employeeXml.SelectSingleNode("position").InnerText; var salaryXml = employeeXml.SelectSingleNode("salary"); employee.salary = Decimal.Parse(salaryXml.InnerText, CultureInfo.InvariantCulture); employee.salary_currency = salaryXml.Attributes["salary_currency"].InnerText; employee.gender = employeeXml.Attributes["gender"].InnerText; if (employeeXml.SelectSingleNode("birth_date") != null) { employee.birth_date = employeeXml.SelectSingleNode("birth_date").InnerText; } hotel.Employees.Add(employee); } foreach (XmlNode reviewXml in hotelXml.SelectNodes("reviews/review")) { var review = new HotelsModels.Review(); review.review_id = reviewXml.Attributes["review_id"].InnerText; review.reviewer = reviewXml.SelectSingleNode("reviewer").InnerText; review.rating = reviewXml.Attributes["rating"].InnerText; if (reviewXml.SelectSingleNode("comment") != null) { review.comment = reviewXml.SelectSingleNode("comment").InnerText; } hotel.Reviews.Add(review); } isolatedContext.Hotels.Add(hotel); // Записване на всички промени isolatedContext.SaveChanges(); } }