Asp.net mvc 如何在OData中使用具有多个主键的增量进行修补
我试图使用补丁更新OData中的记录,但该表由多个主键组成,因此它给出了错误信息 “传递的主键值数量必须与实体上定义的主键值数量匹配。ASP.NET MVC实体框架” 下面是示例代码Asp.net mvc 如何在OData中使用具有多个主键的增量进行修补,asp.net-mvc,asp.net-web-api,odata,patch,delta,Asp.net Mvc,Asp.net Web Api,Odata,Patch,Delta,我试图使用补丁更新OData中的记录,但该表由多个主键组成,因此它给出了错误信息 “传递的主键值数量必须与实体上定义的主键值数量匹配。ASP.NET MVC实体框架” 下面是示例代码 public async Task<IHttpActionResult> Patch(Delta<PreferenceFormat> patch) { Validate(patch.GetEntity()); if (!ModelState
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);
}
我怎样才能做到这一点。我可能会迟到,但是
FindAsync
有以下定义
public virtual Task<object> FindAsync(params object[] keyValues)
公共虚拟任务FindAsync(参数对象[]keyValues)
因此,可以使用多个关键点
来自MSDN:复合键值的顺序在EDM中定义,而EDM又在设计器中定义,由Code First fluent API或DataMember属性定义 我可能会迟到,但
FindAsync
有以下定义
public virtual Task<object> FindAsync(params object[] keyValues)
公共虚拟任务FindAsync(参数对象[]keyValues)
因此,可以使用多个关键点
来自MSDN:复合键值的顺序在EDM中定义,而EDM又在设计器中定义,由Code First fluent API或DataMember属性定义