public PersonalDocument GetById(int id)
 {
     using (var db = new PersonalIdContext())
     {
         MyXDocument md = db.Documents.Find(id);
         string secretPhrase = GetSecretPhrase();
         md.XmlDocument = StringCipher.Decrypt(md.XmlDocument, secretPhrase);
         PersonalDocument entity = Utility.ParseXmlToPersonalDocument(md.XmlDocument);
         entity.Id = md.Id;
         return entity;
     }
 }
        public PersonalDocument Update(PersonalDocument entity)
        {
            var xmlEntity = Utility.ConvertPersonalDocumentEntityToXml(entity);
            Utility.ValidateXmlEntity(xmlEntity);

            string secretPhrase = GetSecretPhrase();
            var e = new MyXDocument(entity, secretPhrase);

            using (var db = new PersonalIdContext())
            {
                var dbEntity = db.Documents.Single(a => a.Id == entity.Id);
                dbEntity = e;
                db.SaveChanges();

                return entity;
            }
        }
        public PersonalDocument Add(PersonalDocument entity)
        {
            string secretPhrase = GetSecretPhrase();
            var e = new MyXDocument(entity, secretPhrase);

            //write it to file
            //Utility.WriteEntityToXmlFile(entity);

            using (var db = new PersonalIdContext())
            {
                db.Documents.Add(e);
                db.SaveChanges();

                entity.Id = e.Id;
                return entity;
            }
        }
        public IEnumerable<PersonalDocument> GetAll()
        {
            IList<PersonalDocument> results = new List<PersonalDocument>();
            using (var db = new PersonalIdContext())
            {
                IList<MyXDocument> mds = db.Documents.ToList();
                foreach (var i in mds)
                {
                    string secretPhrase = GetSecretPhrase();
                    i.XmlDocument = StringCipher.Decrypt(i.XmlDocument, secretPhrase);

                    PersonalDocument entity = Utility.ParseXmlToPersonalDocument(i.XmlDocument);
                    entity.Id = i.Id;
                    results.Add(entity);
                }
                return results;
            }
        }
        public void Delete(PersonalDocument entity)
        {
            string secretPhrase = GetSecretPhrase();
            var xEntity = new MyXDocument(entity, secretPhrase);

            using (var db = new PersonalIdContext())
            {
                var entry = db.Entry(xEntity);
                if (entry.State != EntityState.Deleted)
                {
                    entry.State = EntityState.Deleted;
                }
                else
                {
                    db.Set<MyXDocument>().Attach(xEntity);
                    db.Set<MyXDocument>().Remove(xEntity);
                }
                db.SaveChanges();
            }

        }