【发布时间】:2014-04-28 02:11:27
【问题描述】:
我对使用实体框架的延迟加载功能一直面临的这个问题感到非常困惑。 我知道触发数据库查询的扩展,如 .ToList()、.Count() 等。 我的问题是,如果您使用 IEnumerable DTO 作为返回类型,这会触发数据库查询吗?
例如,您有以下 DTO:
public DtoUser
{
public string Name { get; set; }
public int Age { get; set; }
}
我在你的业务层有这个方法:
public BLLUser
{
public IEnumerable<User> GetAllUser
{
var output = from u in context.User
select new DtoUser
{
Name = u.Name,
Age = u.Age
};
}
}
我将其称为:
private void GetUserOnBll()
{
using (BLLUser b = new BLLUser())
{
var dtoUser = b.GetAllUser();
// can I still do this without triggering the database query
// or the query is already been triggered
// since the return type is an IEnumerable DTO
var filtered = dtoUser.Where(n => n.Name == "TEST");
}
}
“b.GetUser()”方法会触发数据库查询还是我必须使用 .ToList() 来触发查询?
【问题讨论】:
标签: c# entity-framework