Entity Framework Core - получить весь DbSet без использования include () - PullRequest
0 голосов
/ 17 марта 2020

Допустим, у меня есть следующие 2 класса, которые будут представлять отношения между 2 таблицами БД (созданными с помощью EF Core Migrations):

public class Author
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Book Book { get; set; }
}

public class Book 
{
    public int Id { get; set; }
    public String name { get; set; }
    public string Genre { get; set; }
}

Эти 2 класса добавляются как DbSet в моем ApplicationDbContext class.

Когда я получаю запись Author, я хочу, чтобы объект Book также был заполнен информацией. Кажется, мне нужно получить его следующим образом:

return _context.Author.Include(x => x.Book).ToList(); 

Если у меня в классе Author было дюжина различных объектов, значит ли это, что я должен связывать вызовы методов .Include() для каждого объект? Есть ли универсальный метод, который скажет мне заполнить все объекты внутри класса Author? Что-то вроде .IncludeAll() возможно?

1 Ответ

0 голосов
/ 17 марта 2020

Вы можете использовать отложенную загрузку на вашем ядре EF. Таким образом, вам не нужно каждый раз включать его.

По сути, вам нужно добавить виртуальное ключевое слово к вашей сущности книги:

public class Author{
    public int Id {get; set;}
    public string Name {get; set; }
    public virtual Book Book {get; set; }
}

public class Book {
    public int Id {get; set;}
    public String name {get; set;}
    public string Genre {get; set; }
}

Затем необходимо включить отложенную загрузку, установив Пакет Microsoft.EntityFrameworkCore.Proxies и включение его с помощью вызова UseLazyLoadingProxies. Например: в вашем классе startup.cs измените dbcontext, как показано ниже

services.AddDbContext<BloggingContext>(
    b => b.UseLazyLoadingProxies()
          .UseSqlServer(myConnectionString));

Пожалуйста, перейдите по следующей ссылке, чтобы понять, как работает отложенная загрузка https://docs.microsoft.com/en-us/ef/core/querying/related-data

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