我有几个DBML生成的类,它们通过id链接在一起,例如
ClassA {
AID,
XID,
Name
}
ClassB {
AID,
ExtraInfo,
ExtraInfo2
}
使用类似db.ClassAs.Where(XID == x)
的内容并迭代结果,
它最终会为每个ClassA和每个ClassB执行查询,这很慢。
或者,我尝试使用ExecuteQuery
来获取我关心的所有信息并返回ClassA。在迭代过程中,我最终做了同样的事情,即做了很多单独的提取而不仅仅是1.如果我将它存储在ClassC(与DB实体没有关联)中,它有两个ClassA感兴趣的字段和ClassB一样,这个查询速度要快得多,但令人讨厌b / c我刚刚创建了IMO一个不必要的ClassC。
我如何仍然使用与ClassB关联的ClassA,仍然使用ExecuteQuery
运行1个查询而不是A * B个查询?
答案 0 :(得分:0)
如果您有关联,不应该需要使用ExecuteQuery()。
以下是使用一些虚构的图书库上下文和结果的匿名类型的示例:
var results =
Books
.Where(book => book.BookId == 1)
.Select(book =>
new
{
book.Name,
AuthorName = book.Author.Name, //Is a field in an associated table.
book.Publisher, //Is an associtated table.
});
编辑:没有匿名类型
var results =
Books
.Where(book => book.BookId == 1)
.Select(book =>
new BookResult()
{
BookName = book.Name,
AuthorName = book.Author.Name, //Is a field in an associated table.
Publisher = book.Publisher, //Is an associtated table.
});