Отключить отложенную загрузку в ядре Entity Framework - PullRequest
1 голос
/ 25 мая 2019

Существует множество сообщений о том, как отключить отложенную загрузку в Entity Framework, но те же методы не работают в EF Core.Я нашел свойство LazyLoadingEnabled в трекере изменений, но, похоже, это не работает вообще.

Все указывает на это в EF:

this.Configuration.LazyLoadingEnabled = false;

Но, Configuration свойство отсутствует в EF Core.

Вот пример того, о чем я говорю:

public class TestContext : DbContext
{
    public DbSet<Person> People { get; set; }
    public DbSet<Address> Addresses { get; set; }

    public TestContext()
    {
        this.ChangeTracker.LazyLoadingEnabled = false;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {            
        var connection = new SqliteConnection($"Data Source=Test.db");
        connection.Open();

        var command = connection.CreateCommand();

        command.CommandText = $"PRAGMA foreign_keys = ON;";
        command.ExecuteNonQuery();

        optionsBuilder.UseSqlite(connection);
        optionsBuilder.UseLazyLoadingProxies(false);

        base.OnConfiguring(optionsBuilder);
    }

    private static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");

        using (var context = new TestContext())
        {
            context.Database.EnsureCreated();

            var personKey = Guid.NewGuid().ToString();
            var addressKey = Guid.NewGuid().ToString();

            context.People.Add(new Entities.Person { PersonKey = personKey, BillingAddress = new Entities.Address { AddressKey = addressKey } });
            context.SaveChanges();
        }

        using (var context = new TestContext())
        {
            var people = context.People.ToList();

            foreach (var person in people)
            {
                if (person.BillingAddress == null) throw new Exception("The billing address wasn't loaded");
            }
        }
    }
}

Выше выдается исключение, потому что BillingAddress не загружается, хотя яотключил ленивую загрузку.

Я подозреваю, что это ошибка, но, пожалуйста, скажите мне, что это не так.Я зарегистрировал это здесь: https://github.com/aspnet/EntityFrameworkCore/issues/15802

Вы можете скачать образец здесь: https://www.dropbox.com/s/mimvgvcmibr7em2/EFSQLiteTest.7z?dl=0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...