System.Data.Entity.DbSet vs System.Data.Entity.Infrastructure.DbQuery

ref*_*tor 5 entity-framework

有人可以解释一下实体框架中两者之间的区别.

例1:

obj = new TicketsEntities();
var depts = obj.DEPARTMENTs.Select( x => x);
string str = depts.GetType().ToString();
Run Code Online (Sandbox Code Playgroud)

在这种情况下str print --- System.Data.Entity.Infrastructure.DbQuery`1 [LINQu.Models.DEPARTMENT]

例2:

obj = new TicketsEntities();
var depts = obj.DEPARTMENTs;
string str = depts.GetType().ToString();
Run Code Online (Sandbox Code Playgroud)

在这种情况下str print --- System.Data.Entity.DbSet`1 [LINQu.Models.DEPARTMENT]

在任何一种情况下,当我们遍历depts时,我们得到相同的结果,那么两者之间有什么区别,哪一个更受欢迎?

Mar*_*ong 3

DbSet 表示数据集,并且可以通过公开添加、更新、删除等方法来操作数据。DbQuery 表示对一组数据执行的 Linq 查询。它没有添加、更新和删除方法。

在你的情况下,我认为没有真正的区别,但为了简单起见,我会选择你的第二个例子,因为 Select(x=>x) 不是必需的。