• 1397/06/26

update در api :

سلام و درود بر استاد عزیز

توی api برای insert از نمونه کد زیر استفاده میشه (طبق آموزش)

حالا میخواستم بدونم جهت update  و همچنین delete کردن باید چیکار بکنیم

   public void Posttest(bazargani_tankhah tradif)
        {
        tansanad.create_date = DateTime.Now;
            dbtankhah_sanad.tankhah_sanad.Add(tansanad);
            dbtankhah_sanad.SaveChanges();
        }

 

  • 1397/06/26
  • ساعت 15:03

سلام 

از put و delete استفاده کتید 


  • 1397/06/26
  • ساعت 16:13

ممنون ، راهنمایی بیشتر میفرمایید لطفا

یه نمونه کد هم باشه عالی

 

من از این کد استفاده کردم ، ارور گرفت

   [HttpDelete]
        [Route("deleteradif/{radifid}")]  
        public bazargani_tankhah deleteradif(int id)
        {
            var del =  dbtankhah_radif.tankhah_radif.Find(id);
            dbtankhah_radif.tankhah_radif.Remove(del);
            return del;
        }

 


  • 1397/06/26
  • ساعت 16:38

سرچ کنید Create Rest Api In MVC

نمونه های کامل بسیار هست 


  • 1397/06/26
  • ساعت 16:49

ممنون ، اطمینان داشته باشید قبل از مطرح کردن هر  پرسش چندین بار جستجو کردم و به نتیجه ای نرسیدم

دوستان ، کسی میتونه راهنمایی کنه و نمونه کدی در این مورد رو معرفی کنه؟

ممنون میشم



  • 1397/06/26
  • ساعت 17:14

کد های api رو ببینید 


  • 1397/06/26
  • ساعت 17:56

کار نکرد استاد عزیز

این کد و همچنین عکس ارور

  [HttpDelete]
        [Route("deleteradif/{radifid}")]
        public HttpResponseMessage Delete(int id)
        {
            var tankhahradif = dbtankhah_radif.tankhah_radif.Find(id);
            if (tankhahradif == null)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
            dbtankhah_radif.tankhah_radif.Remove(tankhahradif);
            dbtankhah_radif.SaveChanges();         
            return Request.CreateResponse(HttpStatusCode.OK, tankhahradif);
        }


  • 1397/06/26
  • ساعت 17:58

در اسرع وقت بررسی میکنم ببینم نمونه با زامارین داریم 

پیددا کنم براتون میزارم 


  • 1397/06/27
  • ساعت 07:58

ممنونم استاد عزیز

خدا رو شکر حل شد ، کد به شکل زیر تغییر کرد - فقط میمونه کد update

  [HttpGet]
        [Route("deleteradif/{radifid}")]
        public HttpResponseMessage Delete(int radifid)
        {
            var tankhahradif = dbtankhah_radif.tankhah_radif.Find(radifid);
            if (tankhahradif == null)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }
            dbtankhah_radif.tankhah_radif.Remove(tankhahradif);
            dbtankhah_radif.SaveChanges();         
            return Request.CreateResponse(HttpStatusCode.OK, tankhahradif);
        }

 


  • 1397/06/27
  • ساعت 10:06

سلام استاد

برای update کردن توی api از کد زیر استفاده کردم

   [HttpGet]
        [Route("updateradif/{radifid}")]
        public HttpResponseMessage Put( int radifid, bazargani_tankhah tankhahradif)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            if (radifid != tankhahradif.Id)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            dbtankhah_radif.Entry(tankhahradif).State = EntityState.Modified;


            dbtankhah_radif.SaveChanges();
         
            return Request.CreateResponse(HttpStatusCode.OK);
        }

 و توی repository از کد زیر

  public void Update_Tankhah_radif(int id,bazargani_tankhah tan)
        {
            using (var client = new HttpClient())
            {
                string json = JsonConvert.SerializeObject(tan);
                StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
                var result = client.PostAsync(ApiUrl + "/updateradif/"+id, content).Result;
            }

        }

هیچ اروری نمیده ، ولی عملیات update انجام نمیشه

انگار با آدرس api مشکل داره و اصلا وارد کد update من نمیشه


  • 1397/06/27
  • ساعت 10:15

اون صفت get رو باید بردارید و put بدید 


  • 1397/06/27
  • ساعت 10:18

تاثیری نداره استاد

Repository رو برای put درست نوشتم؟ کد و همچنین نحوه آدرس دهی API

   public void Update_Tankhah_radif(int id,bazargani_tankhah tan)
        {
            using (var client = new HttpClient())
            {
                string json = JsonConvert.SerializeObject(tan);
                StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
                var result = client.PutAsync(ApiUrl + "/updateradif/"+id, content).Result;
            }

        }

 


  • 1397/06/27
  • ساعت 12:34

در سمت وب Trace کنید ببینید اصلا متد update فراخوانی میشه یا نه 


  • 1397/06/27
  • ساعت 12:36

نه استاد / انگار اصلا وارد متد update نمیشه

عجب داستانی داره این api

استاد به دادم برس


  • 1397/06/31
  • ساعت 08:25

سلام استاد

راه حلی برای این موضوع پیدا نکردید؟

من تو این چند روز واقعا کلی تست زدم . راه های محتلف رو امتحان کردم ، نشد که نشد

لطفا به دادم برسید

ممنون


  • 1397/06/31
  • ساعت 11:03

من دارم باهاش کار میکنم و مشکلی ندارم 

کد api خودم رو براتون میزارم 

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using SPA_Example.Models;

namespace SPA_Example.Controllers
{
    public class PeopleController : ApiController
    {
        private SPA_ExampleContext db = new SPA_ExampleContext();

        // GET: api/People
        public IQueryable<Person> GetPeople()
        {
            return db.People;
        }

        // GET: api/People/5
        [ResponseType(typeof(Person))]
        public IHttpActionResult GetPerson(int id)
        {
            Person person = db.People.Find(id);
            if (person == null)
            {
                return NotFound();
            }

            return Ok(person);
        }

        // PUT: api/People/5
        [ResponseType(typeof(void))]
        public IHttpActionResult PutPerson(int id, Person person)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != person.ID)
            {
                return BadRequest();
            }

            db.Entry(person).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PersonExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }

        // POST: api/People
        [ResponseType(typeof(Person))]
        public IHttpActionResult PostPerson(Person person)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.People.Add(person);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = person.ID }, person);
        }

        // DELETE: api/People/5
        [ResponseType(typeof(Person))]
        public IHttpActionResult DeletePerson(int id)
        {
            Person person = db.People.Find(id);
            if (person == null)
            {
                return NotFound();
            }

            db.People.Remove(person);
            db.SaveChanges();

            return Ok(person);
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }

        private bool PersonExists(int id)
        {
            return db.People.Count(e => e.ID == id) > 0;
        }
    }
}

 

این کد بدون هیچ مشکل داره کار میکنه 

با کد های خودتون مقایسه کنید و اگر برابر بود مشکل از جای دیگه است 


  • 1397/06/31
  • ساعت 11:58

استاد ممنون

تا اینجاش درست

ولی با چه آدرس Route فراخونی میشه؟

منظورم اینه توی repository چجوری فراخونی میشه؟

چون کلا متفاوت هستش نسبت به اون برنامه دیوار

توی اونجا با هر چی توی api کار داشتیم با یه آدرسی از توی Repository فراخونیش میکردیم و پاسش میدادیم به اون آدرس

اینجا و توی این کد شما همچین آدرس و نحوه پاس دادن اطلاعات بهش فرق داره انگار

کد repository هم لطف میکنید؟

من فکر کنم مشکل از اونه

کدی که به وسیله اون و آدرس URL  متد رو فراخونی میکنیم

ممنونم


  • 1397/06/31
  • ساعت 12:13

فقط یه راهنمایی

ممنون میشم

به من بگید چجوری از توی برنامه دیوار اطلاعاتی که نیاز به ویرایش دارن رو بفرستم برای  متد put در کد شما

مثلا Save یه آدرس URL داشت که از طریق اون آدرس به متد save توی API درسترسی داشتیم و اطلاعات رو میدادیم بهش

توی اینجا برای update چجوریه استاد؟


  • 1397/06/31
  • ساعت 12:37

میتونید به متد Put در Api یک Rout بدید تا بتونید از طریق url بهش دسترسی داشته باشید 

 


  • 1397/06/31
  • ساعت 12:41

خب اینکار رو که کردم

نشد

ای خدا

نمیشه نمونه repository رو هم برای من بزارید برای متد put?

ممنون میشم

این آخریه دیگه

نشد کلا میبوسم میزارم کنار


  • 1397/06/31
  • ساعت 12:45

دوسن من این متد چه ربطی به repository داره آخه !!!!!!!!!

اون یه متد هست که باید داخل put صدا زده بشه 

اگر عمل نمیکنه باید Trace کنید ببینید در کدام خط به مشکل میخوره 

اصلا وارد میشه یا نه 

شما قبل از استفاده از قابلیت خاصی مثل Web Api باید راجع به اون تحقیق کنید و بررسی کنید ببینید نحوه عملکرد اون به چه شکل است 

 


  • 1397/06/31
  • ساعت 12:50

repository میگم چون تمام قسمت های مثل save  و یا select کردن ها توی repository و به وسیله آدرس دهی انجام میشد

کلا داستان فرق کرده اینجا

کسی که یه نمونه ساده از برنامه دیوار رو میخواد بنویسه گزینه هایی مثل update  و delete رو هم 100% نیاز پیدا میکنه و به نظرم لازم بود آموزش داده بشه توی فیلم ها

در هر صورت ممنون و عذر میخوام به خاطر سوال های زیاد


  • 1397/06/31
  • ساعت 12:57

آموزش Repository سایت رو بیینید 

متد Update اون رو در متد Put صدا بزنید 

 


  • 1397/06/31
  • ساعت 14:10

: )


  • 1397/06/31
  • ساعت 14:12

نمونه کد ندارم دوست من 

ما سرویس ها موبایلمون رو SOA با WCF میسازی برای همین از Service جای Repository استفاده میکنیم 

حالا شما برای اینکه کارت راه بیوفته فعلا دستور آپپدیت رو مستقیم داخل Put بنویس تا در اسرع وقت کدت رو اصلاح کنی 


logo-samandehi