clas
图书:ID,名称,内容,出版物
作者:Id,Name
多对多
书
Id | Name | Content | Publishment
1 book1 somecontent some pub
2 book2 somecont somepub
作者
Id | Name
1 Author1
2 Author2
3 Author3
4 Author4
BookAuthor
IdBook | IdAuthor
1 2
1 3
1 4
2 1
2 3
我如何获得类似的东西:
Name | Content | Author
Book1 some content Author2,Author3,Author3
Book2 somecontent Author1,Author3
答案 0 :(得分:1)
有几种方法可以做到这一点。
基于此,我认为您使用DB-first。在这种情况下,您的实体将创建为部分类。为您的Book类创建一个新的部分类文件,并添加一个新属性以检索作者姓名。像这样:
public partial class Book
{
public string AuthorNames => string.Join(", ", authors.Select(a => a.Name));
}
为防止多次访问数据库以检索关联的作者,请在检索图书时使用include。
var books = myContext.Books.Include(nameof(Book.authors));
另一种方法是使用投影创建匿名类型。
var books = myContext.Books
.Select(b => new {
b.Name,
b.Content,
AuthorNames = b.authors.Select(a => a.Name)
})
.AsEnumerable()
.Select(b => new {
b.Name,
b.Content,
Authors = string.Join(", ", b.AuthorNames)
});