【问题标题】:Generic Unit of Work & (Extensible) Repositories Framework Generic Unit of Work & (Extensible) Repositories Framework with lazy loading通用工作单元和(可扩展)存储库框架通用工作单元和(可扩展)存储库框架延迟加载
【发布时间】:2014-12-26 14:52:31
【问题描述】:
  1. 在我的架构师解决方案中,我使用了来自此链接的通用工作单元和(可扩展)存储库框架开源: https://genericunitofworkandrepositories.codeplex.com/ 但是示例代码没有使用延迟加载,所以我在我的项目中激活了它但它不起作用?

2.通常使用实体框架(延迟加载模式处于活动状态)当我们检索一个对象时,相关对象未检索到我们调用他的相关对象的一些属性。但是在我使用这个框架和延迟加载模式的项目中,我没有这个结果,当检索我的父对象时,相关的是自动加载的?我需要帮助吗?

这是我的数据上下文的构造函数:

 public DataContext(string nameOrConnectionString)
            : base(nameOrConnectionString)
        {
            _instanceId = Guid.NewGuid();
            //Configuration.LazyLoadingEnabled = false;
            //Configuration.ProxyCreationEnabled = false;

        }

这是我的控制器的一个例子:

              //Loading agencies only (but not working because i get all the related objects)
        IList<Agency> Agence = AgencyService.Query().Select().ToList();

        Agency Ag = Agence[0];

        //Loads Agency company for particular Agency only (seperate SQL query) => also not working 
        Company company = Ag.Company;

【问题讨论】:

    标签: asp.net-mvc entity-framework-6 repository-pattern


    【解决方案1】:

    设置延迟加载活动:

    1. context.Configuration.ProxyCreationEnabled 应该为 true。
    2. context.Configuration.LazyLoadingEnabled 应该为 true。

    3. 导航属性应定义为公共的、虚拟的。如果属性未定义为虚拟,则上下文不会进行延迟加载。

    【讨论】:

    • 延迟加载在实体框架中默认处于活动状态,我们不需要将 Configuration.LazyLoadingEnabled 设置为 true,并且我的所有导航属性都是公共和虚拟的。使用通用存储库时是否有特定配置??
    • 在 Entity Framework 运行时,ObjectContext 实例中的 LazyLoadingEnabled 属性的默认值为 false。但是,如果您使用实体框架工具创建新模型和相应的生成类,则生成的代码会在生成的对象上下文的构造函数中将 LazyLoadingEnabled 设置为 true。
    • 这意味着,数据库优先方法,然后默认情况下 azyLoadingEnabled 属性为 true。但首先我们需要在上下文构造函数中设置代码
    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多