我想知道是否可以组合懒惰和急切加载。 例如,我有一个带有GET方法的Web Api控制器,不需要加载相关的实体数据,但我还有另一个Web Api控制器及其GET需要从相关实体检索数据的方法。
将这两种方法结合起来是否是一种好的做法,是否需要设置任何特定的配置?
答案 0 :(得分:2)
是的,你可以做到这一点。根据你的实际情况,这也是一个很好的做法。
当您不需要 Lazyloding
时,您可以针对该特定方法将其停用,如下所示。
public List<PropertyListDto> SearchProperties(AdditionalSearchInput input)
{
_context.Configuration.LazyLoadingEnabled = false;//to remove lazy loading
///your code
}
注意:在Entity Framework 4及更高版本中默认启用延迟加载。我们可以在disable
级别全局DbContext
,或者query level
选择DbContext
,如上所示。
以下是public partial class MyDBEntities : DbContext
{
public MyDBEntities(): base("name=MyDBEntities")
{
this.Configuration.LazyLoadingEnabled = false;
}
}
级别的操作方法。
constractor
更新:不需要lazyloding 的50个控制器你可以在query level
级别禁用它,如下所示。然后你不需要在每个方法上public class YourAppService : IYourAppService
{
private readonly YourDbContext _context;
public YourAppService(YourDbContext context)
{
_context = context;
_context.Configuration.LazyLoadingEnabled = false;//to remove lazy loading
}
}
提供。我认为这是实现它的非常快捷的方法:)
Embeddable