मेरे पास यह नेट कोर एपीआई नियंत्रक है जो नीचे एक पुट अनुरोध करता है।

एसक्यूएल सर्वर में प्रभावित तालिका इस तरह दिखती है:

carID  (varchar(15), NULL)
optionID (varchar(15), NOT NULL)
optionDescription (varchar(255), NULL)
optionType (varchar(50), NULL)
factoryID (varchar(15), NULL)

परीक्षण में, मैं उन गुणों के साथ भेज रहा हूं जिन्हें मैं अपने पुट एपीआई कॉल में इस तरह बदलना चाहता हूं:

{
    " optionID": "633fr",
    "optionDescription": "Full Tech Package A"
}

यह डेटाबेस में प्रविष्टि को अद्यतन करता है, लेकिन यह PUT कॉल में नहीं भेजे गए सभी मानों को NULL पर भी सेट कर रहा है। तो जब यह विकल्प विवरण अपडेट करता है, तो यह विकल्प आईडी को छोड़कर अन्य सभी मानों को न्यूल पर सेट कर रहा है।

मैं इसे अन्य मान सेट करने से कैसे रोकूं?

धन्यवाद!

यहाँ नियंत्रक है:

    // PUT: api/CarOptions/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutCarOptions(Guid id, CarOptions carOptions)
    {
        if (id != carOptions.OptionId)
        {
            return BadRequest();
        }

        _context.Entry(carOptions).State = EntityState.Modified;

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

        return NoContent();
    }
0
SkyeBoniwell 9 अक्टूबर 2020, 17:31

1 उत्तर

सबसे बढ़िया उत्तर

आपके विवरण के अनुसार, मेरा सुझाव है कि आप पहले मॉडल को संलग्न करने का प्रयास कर सकते हैं और फिर विशिष्ट संपत्ति IsModified को सत्य पर सेट कर सकते हैं।

यह पूरे मॉडल को अपडेट करने के बजाय केवल विशिष्ट फ़ील्ड को अपडेट करेगा।

अधिक विवरण, आप नीचे दिए गए उदाहरण का उल्लेख कर सकते हैं:

    // PUT: api/CarOptions/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutCarOptions(Guid id, CarOptions carOptions)
    {
        _context.Documents.Attach(carOptions);
        _context.Entry(carOptions).Property(x => x.optionDescription).IsModified = true;
        _context.SaveChanges();


        return NoContent();
    }
1
Brando Zhang 12 अक्टूबर 2020, 09:03