Как установить исправления с использованием Delta с несколькими первичными ключами в OData

Я пытаюсь использовать исправление для обновления записи в OData, но таблица состоит из нескольких первичных ключей, поэтому она выдает ошибку: "Число переданных значений первичного ключа должно соответствовать количеству значений первичного ключа, определенных для объекта. ASP.NET MVC Entity Framework"

Вот пример кода.

    public async Task<IHttpActionResult> Patch(Delta<PreferenceFormat> patch)
    {

        Validate(patch.GetEntity());

        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        PreferenceFormat PreferenceFormat = await db.PreferenceFormats.FindAsync(_userId);

        if (PreferenceFormat == null)
        {
            return NotFound();
        }

        patch.Patch(PreferenceFormat);

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

        return Updated(PreferenceFormat);
    }

Мне нужно передать 4 параметра первичного ключа здесь:

PreferenceFormat PreferenceFormat = await PreferenceFormats.FindAsync(_userId);

Как я могу добиться того же.

1 ответ

Я могу опоздать на вечеринку, но FindAsync имеет следующее определение

public virtual Task<object> FindAsync(params object[] keyValues)

Следовательно, вы можете использовать несколько ключей.

Из MSDN. Порядок значений составного ключа соответствует определению в EDM, которое, в свою очередь, определяется в конструкторе, свободным API Code First или атрибутом DataMember.

Другие вопросы по тегам