2017-01-19 15 views
0

Я хотел бы реализовать ленивую загрузку некоторых свойств в моих бизнес-моделях. Как наилучшим образом сделать это с помощью ASP.NET Core? Внесите контекст базы данных в мою модель и запросите ее, когда свойство используется? Или реализовать общий метод, например void LazyLoadProperty (string propertyName, ApplicationDbContext dbContext) на моей модели и вводить контекст базы данных каждый раз, когда мне нужно ленивое загруженное значение?Ложная загрузка объекта бизнес-модели с помощью ASP.NET Core

Для информации я использую .NETCoreApp1.1 и Entity Framework Core,.

+0

Зачем вам нужна ленивая загрузка в веб-приложении? – DavidG

+0

, потому что некоторые свойства требуют сложных запросов с несколькими объединениями, чтобы получить значение, значение, которое мне редко нужно, поэтому я хотел бы загружать их только тогда, когда мне это нужно – AdrienTorris

+1

https://docs.microsoft.com/en-us/ef/ core/querying/related-data Там вы найдете рекламный ролик о ленивой загрузке - пока еще нет возможности с EFC .... его на Backlog – mvermef

ответ

1

Когда вы делаете ленивую загрузку данных для своих бизнес-моделей, я использую подход, чтобы сделать бизнес-модель осведомленной о контексте базы данных, а затем иметь свойство ленивой загрузки данных при доступе к ресурсу, если данные для этого свойства hasn ' t все же был ленивый загружен. Я считаю, что этот метод работает очень хорошо.

+0

Значит, ваша бизнес-модель знает ваш контекст базы данных, не так ли? Как передать контекст базы данных в вашу бизнес-модель? По конструктору? – AdrienTorris

+0

Хотя я являюсь поклонником выборочного модульного тестирования, я очень прагматично отношусь к тому, как я выделяю свои усилия по развитию. Поэтому в моем случае я явно кодирую доступ к контексту базы данных в бизнес-модели. Передача его через конструктор - это еще один вариант, и его часто предпочитают разработчики, которые регистрируют бизнес-модель в контейнере Dependency Injection, который я предпочитаю не делать. –

 Смежные вопросы

  • Нет связанных вопросов^_^