Ленивая загрузка в Web API Core 2.2 - PullRequest
0 голосов
/ 11 января 2019

У меня проблемы с отложенной загрузкой. У меня есть следующий dbcontext.

public virtual DbSet<AccountGroupMst> AccountGroupMst {get; set;}

Я включил отложенную загрузку.

services.AddDbContext<DBContext>(x => 
                x.UseSqlServer(Configuration.GetConnectionString("Test"))
                .UseLazyLoadingProxies());

Модель, у меня есть виртуальная и это таблица собственных ссылок.

public class AccountGroupMst
{
    [Key]
    [Required]
    public int AccountGroupId { get; set; }

    [MaxLength(255)]
    [StringLength(255)]
    [Required]
    public string AccountGroupName { get; set; }

    [ForeignKey("ParentAccountGroupId")]
    public  int? ParentAccountGroupId { get; set; }

    public virtual AccountGroupMst ParentGroup { get; set; }
}

У меня проблема в том, что платформа Entity возвращает всех детей.

{
    "data": {
        "0": {
            "parentGroup": {
                "parentGroup": {
                    "parentGroup": null,
                    "accountGroupId": 1,
                    "name": "Test 2.1",
                    "parentAccountGroupId": null
                },
                "accountGroupId": 5,
                "name": "Test 1.1",
                "parentAccountGroupId": 1
            },
            "accountGroupId": 18,
            "name": "Test",
            "parentAccountGroupId": 5
        }
    }
}

Насколько я понимаю, если ленивая загрузка включена, не должно отображаться «Тест 1.1 и Тест 2.1». Пожалуйста, дайте мне знать, если я делаю что-то не так.

1 Ответ

0 голосов
/ 12 января 2019

При отложенной загрузке значения будут доступны только при обращении к ним. При выделении JSON к свойствам осуществляется доступ, а значения извлекаются EF Core как отдельный запрос. Следовательно, не рекомендуется использовать отложенную загрузку с ASP.NET Core.

...