我的解决方案在哪里永久禁用延迟加载?

时间:2015-12-15 22:18:22

标签: c# entity-framework

根据MSDN的几篇文章我知道你只需添加:

this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;

在EDMX文件附带的context.cs文件中或编辑context.tt文件,以便在重新生成edmx文件时添加这些行。

但是,我注意到当数据库字段发生更改(特别是删除它们),并且替换了ADO.NET文件时,必须重新进行更改。当我必须重新创建ADO.NET文件时,是否有可以永久添加要包含在context.cs文件中的行?

我确实注意到这篇关于SO的文章接近这个问题,但没有附近的地方:

Disable lazy loading by default in Entity Framework 4

2 个答案:

答案 0 :(得分:5)

EDMX生成的类是partial,因此您可以在此类中的另一个文件中编写代码。

因此,您将创建另一个文件及其内容,您将创建"创建"像那样的班级:

namespace Same.Namespace.FromOtherContextClass
{
    public partial class Context : DbContext
    {
        public Context()
        {
            this.Configuration.LazyLoadingEnabled = false;
            this.Configuration.ProxyCreationEnabled = false;
        }
    }
}

请记住,此文件中必须具有相同的命名空间。

答案 1 :(得分:-3)

@AlbertoMonterio有正确的想法。

这是有效的代码:

using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using CorporateWeb.API.Model;

namespace CorporateWeb.API.DAL
{
    public partial class context : DbContext
    {
        public context() : base("name=Corporate_WebEntities")
        {
            this.Configuration.LazyLoadingEnabled = false;
            this.Configuration.ProxyCreationEnabled = false;
        }
    }
}