【发布时间】:2014-01-15 22:56:13
【问题描述】:
我有一个方法可以根据 accountId 返回一些交易。
所以,在我的数据访问器中,我这样做:
var items = (from c in Context.transactions where c.accountid == accountId select c).ToList();
然后我调用我拥有的方法,将实体框架对象转换为我自己的自定义 DTO 对象,然后返回一个我通过我的服务、逻辑传递给我的 MVC 控制器的对象。
翻译器获取相邻数据。因此,我的自定义 DTO 可能有一个名为“AccountName string”和“AccountType string”的字段。
帐户名称在一个表中,该表是 Transaction 表的外键,然后 AccountType 是 Account 表的外键。
所以,我的翻译器看起来像:
var return = new TransactionDto {
tranactionId = source.id,
accountName = source.Account.Description,
accountType = source.Account.AccountType.description
}
我似乎有速度问题,我想知道我对 Linq 的理解是否是罪魁祸首。我以为初始数据检索上的ToList() 是选择的结束。然后它将所有数据传递给var items .. 但也许我的翻译实际上正在为“帐户”表进行选择,然后为“AccountType”表进行另一个选择。我的意思是,最初的'来自c in Context..'。获取所有外键表?
【问题讨论】:
标签: linq entity-framework