动态lazyLoading - 实体框架

时间:2013-05-27 16:17:41

标签: entity-framework linq-to-sql lazy-loading eager-loading

我有一个sqlSever数据库,使用EF 5反向工程

默认情况下,延迟加载被禁用,我需要通过将参数传递给我的方法来动态地告诉上下文是否应该包含相关实体(延迟加载):

 public static IEnumerable<Products> getProductsList(SearchQuery<Product> SearchQuery, bool isLazyLoading=false)
    {
        var context = new Context();
        var dataBaseInitializer = new DataBaseInitializer();
        dataBaseInitializer.InitializeDatabase(context);
        // if I need related entities, I Need to enable lazy loading
        context.Configuration.LazyLoadingEnabled = isLazyLoading;
        var ProductsRepository = new Repository<Product>(context);
        var ProductsList = ProductsRepository.Search(SearchQuery);
        return ProductsList;
    }

当我需要没有相关实体的productList时,每件事都没问题,

当将参数'isLazyLoading'传递给true时,我看到它在上下文配置中是很好的标记,但没有加载相关实体,

我想避免“包含”方式...

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我需要这两行:

context.Configuration.LazyLoadingEnabled = isLazyLoading;
context.Configuration.ProxyCreationEnabled = isLazyLoading;

(默认情况下,代理创建已关闭)

谢谢我的莉莉!