如何在ef 6中插入具有多对多关系的模型

时间:2014-12-02 20:13:41

标签: c# json entity-framework asp.net-web-api many-to-many

我要问的问题与:

密切相关

Insert operation with many-to-many relationship using EF

这个问题和我的问题之间的最大区别是,我将如何从网络API方面做到这一点。

基本上我想在MVC Web API 2端点上发布一个沿着

行的json字符串
{"Name":"Job3","Candidate":[1,2,3]}

到终点,如:

POST: api/Jobs

让它认识到我想创建一个与候选人1,2和3有关联的工作3。

编辑: 到目前为止给出的答案,deffinitly允许我继续,但... ...

如果可能,我想使用使用visual studio时创建的脚手架方法来完成此操作。例如

public Job Post(Job JobFromBody){
....
}

*注意:我实际上并不关心json的样子,如果有更好的方式,请告诉我。

1 个答案:

答案 0 :(得分:1)

这样的事情:

public HttpResponseMessage Post(JobRequest request) 
{
    // ... model validation, other checks

    // create job object
    var job = new Job { Name = request.Name, Candidates = new Collection<Candidate>() };

    // associate existing candidates to the job
    foreach(var candidate in request.Candidates) {
        var c = new Candidate { Id = candidate.Id};
        context.Candidates.Attach(c);   // without this, EF will try to create new Candidate
        job.Candidates.Add(c);    // associate the existing candidate with the job
    }

    context.Jobs.Add(job);      // add the job
    context.SaveChanges();      // save

    // ... handle errors, return status codes etc.

}