使用LINQ加载相关实体

时间:2017-02-07 20:56:46

标签: c# entity-framework linq linq-to-sql loading

我有以下两个类:

作者类:

public class Author
{
    public Author()
    {
        this.Books = new List<Book>();
    }
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DOB { get; set; }
    public virtual ICollection<Book> Books { get; set; }
}

和Book课程:

public class Book
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime DatePublished { get; set; }
    public bool IsBorrowed { get; set; }
    public bool IsOverdue { get; set; }
    public int AuthorId { get; set; }
    public virtual Author Author { get; set; }
}

作者可以有很多书。我遇到的问题是加载与作者相关的所有书籍。例如,我的数据库中有一个ID为1的作者,我想返回与该特定作者相关的所有书籍。

我的思维过程是最好的方法是使用LINQ,但是我很失落如何正确创建LINQ查询来执行此操作。能指导我完成上述任务的最佳方法吗?

2 个答案:

答案 0 :(得分:1)

看这里https://msdn.microsoft.com/en-us/library/bb397906.aspx ..这是一个很好的网站开始。

如果您正在使用实体框架,我会推荐https://msdn.microsoft.com/en-us/library/bb399375(v=vs.110).aspx

首先需要实例化数据库上下文,之后可以使用linq访问指定的实体

var dbContext = new DataContext();
var query = from book in dbContext.Books
where book.AuthorId == 1
select book;

之后,您可以在foreach循环(或类似)中执行结果或执行方法

.First();

有例外或

.FirstOrDefault();

没有例外。

答案 1 :(得分:0)

您需要查询books表。类似的东西:

IQueryable<Book> books =  
from book in db.Books
where book.AuthorId == 1  
select book;