【发布时间】:2016-03-21 01:01:40
【问题描述】:
我试图了解是否可以使用实体框架从数据库中获取单行而不返回所有数据。也许我误解了 EF 的工作原理,但我相信它类似于以下内容:
TBL1
Id | Name | Place
1 | Teressa Green | UK
2 | Robin Banks | Germany
3 | Liam Neeson | Canada
如果我想Robin Banks 做类似的事情
context.tbl1.where(obj => obj.name = "Robin Banks")
但是据我了解,这是从表中获取所有数据,然后过滤到一行。有没有办法在不返回所有数据的情况下只将一行返回到逻辑?
用一句话来表达我的问题。当我只想要 1 时,我试图避免加载所有行。
【问题讨论】:
-
“这是从数据库表中获取所有数据,然后过滤到一行” 不,不是。 Entity Framework 将构建一个
SELECT * FROM tbl1 WHERE name = 'Robin Banks'查询并将其传递给数据库服务器,数据库服务器将其作为普通查询执行并将适当的行返回给Entity Framework。 -
你错了。它将在数据库中过滤而不是在内存中。
-
只有在你做这样的事情时才会在内存中过滤:
context.tbl1.ToList().where(obj=>obj.name="Robin Banks")。因为您首先将所有内容加载到内存中,然后使用 where() 语句过滤数据。但是就像你做的那样,过滤器被应用到数据库上。 -
干杯伙计们,这就是我想听到的,我找不到任何地方告诉我这个?您能否提供一些您找到此信息的链接?
-
你要找的是LINQ to Entities。
标签: c# .net entity-framework