public override string Export() { using (Container = new ArticleContext()) { TransactionHelper.AddTransaction(Container, ActionType.Export, null, _currentUser); Container.SaveChanges(); } var all = GetAll(new QueryParams <Article>(0, 999, c => c.ArticleId)); var allXml = all.Select(c => new XmlArticle { Article = c }).OrderBy(c => c.Article.ArticleId).ToList(); using (var stream = XmlArticle.Serialize(allXml.GetType(), allXml)) { stream.Position = 0; var document = new XDocument(new XElement("Articles")); var anotherDocument = XDocument.Load(stream); foreach (var xNode in anotherDocument.Root.Elements().Select(c => c.Elements().First())) { document.Root.Add(xNode); } return(document.ToString()); } }
public string Export(int articleId) { Article article = null; using (Container = new ArticleContext()) { article = Container.Articles.FirstOrNothing(c => c.ArticleId == articleId).Bind(Mapper.Map <Entities.Article, Article>).GetOrDefault(null); TransactionHelper.AddTransaction(Container, ActionType.Export, null, _currentUser); Container.SaveChanges(); } var xmlAricle = new XmlArticle { Article = article }; using (var stream = XmlArticle.Serialize(xmlAricle.GetType(), xmlAricle)) { stream.Position = 0; var document = new XDocument(new XElement("Articles")); var anotherDocument = XDocument.Load(stream); document.Root.Add(anotherDocument.Root.Elements().First()); return(document.ToString()); } }
public int Save(Article entity, bool now = true) { var xmlArticle = new XmlArticle { Article = entity }; var duplicated = Document.Root.Elements().FirstOrDefault(c => c.Attribute("Link").Value == entity.Link); if (duplicated != null) { if (now) { throw new Exception("Найдена статья с таким же источником. Статья не сохранена."); } else { _builder.Append("Найдена повторяющиеся статья для \"{0}\". Статья не сохранена.".Fmt(duplicated.Attribute("ArticleName").Value)); } } xmlArticle.Article.GroupId = xmlArticle.Article.ArticleGroup.GroupId; xmlArticle.Article.CreationDate = DateTime.Now; using (var stream = xmlArticle.Serialize()) { stream.Position = 0; var currentDocument = XDocument.Load(stream); if (currentDocument.Root != null) { var element = currentDocument.Root.Elements().First(); if (duplicated != null) { return(-1); } else { AppendElement(element, "ArticleId", "ImageId"); if (now) { Document.Save(Path); } var id = int.Parse(element.Attribute("ArticleId").Value); entity.ArticleId = id; return(id); } } return(-1); } }