public IHttpActionResult Post(LandTypeViewModel item_viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            LandType item = new LandType {
                Id = item_viewModel.Id, Type = item_viewModel.Type
            };

            //不需指定Timestamp欄位

            db.LandTypes.Add(item);
            try
            {
                db.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                var entityError      = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
                var getFullMessage   = string.Join("; ", entityError);
                var exceptionMessage = string.Concat(ex.Message, "errors are: ", getFullMessage);
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, exceptionMessage));
            }

            return(CreatedAtRoute("DefaultApi", new { id = item.Id }, ToLandTypeViewModel(item)));
        }
Ejemplo n.º 2
0
 public static void MyClassInitialize(TestContext testContext)
 {
     testItem = new LandTypeViewModel {
         Id = 0, Type = "地目A"
     };
     newId = 0;
 }
        public IHttpActionResult Put(int id, LandTypeViewModel item_viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != item_viewModel.Id)
            {
                return(BadRequest());
            }

            //把資料庫中的那筆資料讀出來
            var item_db = db.LandTypes.Find(id);

            if (item_db == null)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!")));
            }
            else
            {
                try
                {
                    //不需指定Id
                    item_db.Type = item_viewModel.Type;
                    //Timestamp欄位以如下方式設定
                    db.Entry(item_db).OriginalValues["Timestamp"] = Convert.FromBase64String(item_viewModel.TimestampString);
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (db.LandTypes.Find(id) == null)
                    {
                        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
                    }
                    else
                    {
                        throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!"));
                    }
                }
            }

            //return Ok(ToLandTypeViewModel(item_db));
            return(Content(HttpStatusCode.Accepted, ToLandTypeViewModel(item_db)));
        }