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

本文关键字:延迟加载 在哪里 我的 解决方案 | 更新日期: 2023-09-27 18:27:06

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

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

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

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

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

在Entity Framework 4 中默认禁用延迟加载

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

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

所以你将创建另一个文件,它的内容你将"创建"相同的类:

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

记住,在这个文件中必须有相同的名称空间。

@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;
        }
    }
}