Как установить исправления с использованием 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.