我正在尝试使用补丁来更新OData中的记录,但该表包含多个主键,因此它会给出错误 "传递的主键值的数量必须与实体上定义的主键值的数量相匹配。 ASP.NET MVC实体框架"
以下是示例代码。
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);
我怎样才能达到同样目的。
答案 0 :(得分:0)
我可能迟到了,但FindAsync
有以下定义
public virtual Task<object> FindAsync(params object[] keyValues)
因此,您可以使用多个键。
来自MSDN:复合键值的排序在EDM中定义,EDM又在设计器中定义,Code First fluent API或DataMember属性。