public async Task<IHttpActionResult> PostAppartment(Appartment appartment)
 {
     if (!ModelState.IsValid)
     {
         return BadRequest(ModelState);
     }
     using (var transaction = db.Database.BeginTransaction())
     {
         if (db.Appartments.Count(e => e.CommunityId == appartment.CommunityId
             && e.BuildingNumber == appartment.BuildingNumber && e.UnitNumber == e.UnitNumber
             && e.DoorNumber == appartment.DoorNumber) > 0)
         {
             return StatusCode(HttpStatusCode.Conflict);
         }
         if (appartment.Status == null)
         {
             appartment.Status = "可售";
         }
         db.Appartments.Add(appartment);
         await db.SaveChangesAsync();
         db.Changes.Add(Helper.Logger.NewRecord<Appartment>(appartment,RequestContext.Principal.Identity.Name));
         await db.SaveChangesAsync();
         db.Entry(appartment).Reference(b => b.Community).Load();
         transaction.Commit();
     }
     return CreatedAtRoute("DefaultApi", new { id = appartment.Id }, appartment);
 }
        public async Task<IHttpActionResult> PutAppartment(int id, Appartment appartment)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != appartment.Id)
            {
                return BadRequest();
            }
            var origin = db.Appartments.Where(i => i.Id.Equals(id)).AsNoTracking().First();
            db.Changes.AddRange(Helper.Logger.ChangeRecords<Appartment>(origin, appartment, RequestContext.Principal.Identity.Name));
            db.Entry(appartment).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AppartmentExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }