public IHttpActionResult PostFactory(FactoryViewModel factory_view_model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            Factory factory_db ;
            try
            {
                factory_db = new Factory { Id = factory_view_model.Id, Cat = factory_view_model.Cat, Type = factory_view_model.Type, NO = factory_view_model.NO, Name = factory_view_model.Name, Sname = factory_view_model.Sname, Unid = factory_view_model.Unid, Contact1 = factory_view_model.Contact1, Contact2 = factory_view_model.Contact2, Email1 = factory_view_model.Email1, Email2 = factory_view_model.Email2, Email3 = factory_view_model.Email3, Telephone1 = factory_view_model.Telephone1, Telephone2 = factory_view_model.Telephone2, Telephone3 = factory_view_model.Telephone3, Website = factory_view_model.Website, Fax = factory_view_model.Fax, Address = factory_view_model.Address, Shipaddr = factory_view_model.Shipaddr, Invoiceaddr = factory_view_model.Invoiceaddr, Pay = factory_view_model.Pay, Currency = factory_view_model.Currency, Lasttrade = factory_view_model.Lasttrade, Note = factory_view_model.Note };
                db.Factories.Add(factory_db);
                db.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, "DbEntityValidationException:" + ex.Message));
            }
            catch (Exception ex)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }

            return CreatedAtRoute("DefaultApi", new { id = factory_db.Id }, ToViewModel(factory_db));
        }
        public IHttpActionResult PutFactory(int id, FactoryViewModel factory_view_model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

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

            //把資料庫中的那筆資料讀出來
            var factory_db = db.Factories.Find(id);
            if (factory_db == null)
            {
                return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
            }
            else
            {
                try
                {
                    //factory_db.catFactory.Name = factory_view_model.CatName;
                    factory_db.Cat = factory_view_model.Cat;
                    //factory_db.typeFactory.Name = factory_view_model.TypeName;
                    factory_db.Type = factory_view_model.Type;
                    factory_db.NO = factory_view_model.NO;
                    factory_db.Name = factory_view_model.Name;
                    factory_db.Sname = factory_view_model.Sname;
                    factory_db.Unid = factory_view_model.Unid;
                    factory_db.Contact1 = factory_view_model.Contact1;
                    factory_db.Contact2 = factory_view_model.Contact2;
                    factory_db.Email1 = factory_view_model.Email1;
                    factory_db.Email2 = factory_view_model.Email2;
                    factory_db.Email3 = factory_view_model.Email3;
                    factory_db.Telephone1 = factory_view_model.Telephone1;
                    factory_db.Telephone2 = factory_view_model.Telephone2;
                    factory_db.Telephone3 = factory_view_model.Telephone3;
                    factory_db.Website = factory_view_model.Website;
                    factory_db.Fax = factory_view_model.Fax;
                    factory_db.Address = factory_view_model.Address;
                    factory_db.Shipaddr = factory_view_model.Shipaddr;
                    factory_db.Invoiceaddr = factory_view_model.Invoiceaddr;
                    factory_db.Pay = factory_view_model.Pay;
                    //factory_db.catPay.Name = factory_view_model.PayName;
                    factory_db.Currency = factory_view_model.Currency;
                    //factory_db.catCurrency.Name = factory_view_model.CurrencyName;
                    factory_db.Lasttrade = factory_view_model.Lasttrade;
                    factory_db.Note = factory_view_model.Note;
                    db.Entry(factory_db).OriginalValues["Timestamp"] = Convert.FromBase64String(factory_view_model.TimestampString);
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FactoryExists(id))
                        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
                    else
                        throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!"));// ""
                }
            }

            return Ok(ToViewModel(factory_db));
        }