entity-framework - 如何发布到 odata webapi 中的相关集合

标签 entity-framework asp.net-web-api odata asp.net-web-api2

我找到了这个 answer这帮助我设置了路线,但我在将实体添加到相关集合时遇到了问题。

模型:

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; }
}

发布到相关集合的 Controller 方法:

    [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);
    }

我可以看到 Author 已发送,但 book.Authors 为 null,您无法添加。 link to image

最佳答案

寻找不会​​带回 child 。尝试:

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

Load related entities

关于entity-framework - 如何发布到 odata webapi 中的相关集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37381165/

相关文章:

javascript - 如何正确指定嵌套 OData $expand 到 Angular $odataresource 指令?

c# - 带有 Odata-V4 和 Dapper 的 Web Api - 服务器端过滤

c# - DbContext 在 Async 方法中处理得太早

c# - 如何使用 EF 4 从当前日期获取最近两天内的所有记录?

entity-framework - 添加新迁移时,EF 数据迁移不会检测更改

entity-framework - Entity Framework 中属性的延迟加载

c# - OWIN ApiController 访问请求正文/字符串化 JSON

asp.net-mvc - 将构造函数参数传递给 MVC Controller 中的注入(inject)对象

asp.net - 来自 Web API 的 XML 响应中的 CData

javascript - Breeze JS/ODATA : Casts can only be performed on entity types