Asp.net mvc 如何在OData中使用具有多个主键的增量进行修补

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

我试图使用补丁更新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);
    }

我怎样才能做到这一点。

我可能会迟到,但是
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属性定义