Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在控制器中加载导航属性而不查看它们_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc 如何在控制器中加载导航属性而不查看它们

Asp.net mvc 如何在控制器中加载导航属性而不查看它们,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我有两门课,一门是作家课,另一门是书课 我在这里向您展示简化代码 class Author { int Id string Name virtual ICollection<Book> Books; } class Book { int Id int AuthorId string Name bool Flag } 在这种方法中,data参数包含作者信息,但不包含书籍信息,因此data.Books为空。原因是我的视图中没有图

我有两门课,一门是作家课,另一门是书课

我在这里向您展示简化代码

class Author
{
    int Id
    string Name
    virtual ICollection<Book> Books;
}

class Book
{
    int Id
    int AuthorId
    string Name
    bool Flag
}
在这种方法中,
data
参数包含作者信息,但不包含书籍信息,因此data.Books为空。原因是我的视图中没有图书信息,并且视图没有绑定图书信息

我的问题是如何在SaveAuthor方法中填充图书集合,或者最好在保存作者的Web API中填充图书集合。

一个答案是,我应该包括视图中作者的所有书籍(作为隐藏字段),这样我就可以在
data
参数中获取它

在不向视图中添加书籍的情况下,是否还有其他方法可以实现此目标


我使用的是VS 2015,可能是MVC4

您的图书模型没有AuthorId属性?它实际上有。我错过了,因为我简化了课程。我现在补充说,就个人而言,防止使用
Include
你的方法绝对正确。您只需通过
AuthorId
获取所有相关书籍,并更改它们的
Flag
属性,然后将其分配给
Author.Books
并最终保存更改。
var relatedBooks=_context.Books.Where(item=>item.Id==Author.Id).ToList();Author.Books=relatedBooks.ForEach(item=>item.Flag=true)_SaveChanges()public ActionResult SaveAuthor(Author data) 
{
    // call Web API to save Author and also update Flag for some of the data.Books.
    // but data.Books is empty at this point.
}