2016-05-23 17 views
3

これは私が経路を設定するのに役立つanswerですが、関連するコレクションにエンティティを追加する際に問題が発生しています。odata webapiの関連コレクションに投稿するには

モデル:関連コレクションに投稿するための

public class Book 
{ 
    public int BookId { get; set; } 
    public string Title { get; set; } and so on 

    [ForeignKey("AuthorId")] 
    public ICollection<Author> Authors { get; set; } 
} 

public class Author 
{ 
    public int AuthorId { get; set; } 
    public string Name { get; set; } 

    [ForeignKey("BookId")] 
    public ICollection<Book> Books { get; set; } 
} 

コントローラ方法:私はその作者を見ることができます

[ODataRoute("Books({key})/Authors")] 
    public async Task<IHttpActionResult> PostAuthor([FromODataUri] int key, Author author) 
    { 
     var book = await db.Books.FindAsync(key); 
     if (book == null) 
     { 
      return NotFound(); 
     } 
     book.Authors.Add(author); 

     await db.SaveChangesAsync(); 
     return StatusCode(HttpStatusCode.NoContent); 
    } 

を経由して送信されますが、book.Authorsがnullで、あなたは追加することはできません。それに。 link to image

答えて

1

Findは子供を戻しません。試してみてください:

var book = await db.Books 
        .Include(b => b.Authors) 
        .FirstOrDefaultAsync(b => b.BookId == key); 

Load related entities

+0

はい、申し訳ありませんでしたタイプミスを - あなたは必要としない場合は()FirstOrDefaultを使用した場合。 –

+0

あなたの答えを私の解決法で編集しましたので、私はそれを受け入れることができます。あなたのアンワーはそれに最も近い回答でしたが、VSでエラーが発生しました。 – kolbanis

関連する問題