代码之家  ›  专栏  ›  技术社区  ›  Thunfische

AngularJs如何根据id为通过外键连接的两个表编写http put请求?

  •  0
  • Thunfische  · 技术社区  · 7 年前

    我在ms sql中有一个表a和表B。我写的如下

        var request = $http({
            method: 'put',
            url: urlBase + '/intervieweeDetails/' + empToUpdate.id,
            data: empToUpdate
        });
    
        return request;
    

    即使我手动为表B编写json并添加到EmptoopDate对象,它也总是抛出异常

    系统InvalidOperationException:“附加类型为”IntervieweeServiceJoin的实体。模型。intervieweeExtra'失败,因为同一类型的另一个实体已具有相同的主键值。如果图形中的任何实体具有冲突的键值,则在使用“Attach”方法或将实体状态设置为“Unchanged”或“Modified”时可能会发生这种情况。这可能是因为一些实体是新的,尚未收到数据库生成的键值。在这种情况下,使用“添加”方法或“添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”

    我的http方法是写的吗?获取和添加工作正常,但我根本无法更新值

        // PUT: api/intervieweeDetails/5
        [ResponseType(typeof(void))]
        public IHttpActionResult PutintervieweeDetail(int id, intervieweeDetail intervieweeDetail)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
    
            if (id != intervieweeDetail.id)
            {
                return BadRequest();
            }
    
            db.Entry(intervieweeDetail).State = EntityState.Modified;
    
            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!intervieweeDetailExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
    
            return StatusCode(HttpStatusCode.NoContent);
        }
    

    这个例外被抓住了

            db.Entry(intervieweeDetail).State = EntityState.Modified;
    
    0 回复  |  直到 7 年前