public int Save(ArticleGroup entity, bool now = true) { var xmlGroups = new XmlArtcileGroup() { ArticleGroup = entity }; var duplicated = Document.Root.Elements().FirstOrDefault(c => c.Attribute("GroupName").Value == entity.GroupName); if (duplicated != null) { if (now) { throw new Exception("Группа с именем \"{0}\" уже существует".Fmt(entity.GroupName)); } else { _builder.Append("Группа с именем \"{0}\" уже существует".Fmt(entity.GroupName)); } } using (var stream = xmlGroups.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, "GroupId", null); if (entity.Groups != null) { foreach (var @group in entity.Groups) { var innerElement = new XElement("Groups", @group); element.Add(innerElement); } } if (now) { Document.Save(Path); } var id = int.Parse(element.Attribute("GroupId").Value); entity.GroupId = id; return(id); } } return(-1); } }
public ArticleGroup Read(int id) { if (Document.Root.Elements().Any()) { var res = Document.Root.Elements().FirstOrDefault(c => c.Attribute("GroupId").Value == id.ToString()); if (res != null) { var textReader = new StringReader(res.ToString()); return(XmlArtcileGroup.Deserialize(textReader)); } } return(null); }