ASP MVC EF - 将请求对象绑定到上下文对象

时间:2017-05-17 11:17:09

标签: asp.net-mvc entity-framework

您好我将请求对象绑定到上下文对象时遇到问题。我举例说明:

class Car {
 public int Id{get; set;}
 public string Name{get; set;}
 public User Owner{get; set;}
}

class User{
 public int Id{get; set;}
 public string Name{get; set;}
 public virtual ICollection<Car> Cars{get; set;}
}

//CarController
    [HttpPut]
    public ActionResult Create(Car car){
     DbContext.Cars.Add(car);
     DbContext.SaveChanges();
    }

$http({
            method: 'PUT',
            url: 'http://localhost/project/api/car/create',
            data: {
                Name: "Audi",
                Owner: { Id: 3 }
            }
        })

当我运行此代码时,将数据库保存到car并创建新用户(具有递增(不同)id)。我想不创建新用户,但添加外键。我知道它为什么会这样,上下文不知道我的User对象。怎么解决?感谢

1 个答案:

答案 0 :(得分:0)

尝试以下代码。我假设用户ID为1,您可以根据需要提供

1.更新您的汽车类以拥有外键的所有者ID属性

class Car {
 public int Id{get; set;}
 public string Name{get; set;}
 public int OwnerId {get;set;}
 [ForeignKey("OwnerId")]
 public User Owner{get; set;}
}

2.编写以下代码以将所有者分配给汽车

car.OwnerId = 1
DbContext.Cars.Add(car);
DbContext.SaveChanges();