게으른로드와 열정적 인로드를 결합 할 수 있는지 궁금합니다. 예를 들어 관련 엔티티 데이터를로드 할 필요가없는 GET 메서드가있는 하나의 웹 API 컨트롤러가 있지만 다른 웹 API 컨트롤러와 해당 메서드를 사용하여 관련 엔터티에서 데이터를 검색해야합니다.EF에서 게으르고 열정적으로 결합하기
이 두 가지 접근 방식을 결합하는 것이 좋으며 설정할 필요가있는 특정 구성이 있습니까?
게으른로드와 열정적 인로드를 결합 할 수 있는지 궁금합니다. 예를 들어 관련 엔티티 데이터를로드 할 필요가없는 GET 메서드가있는 하나의 웹 API 컨트롤러가 있지만 다른 웹 API 컨트롤러와 해당 메서드를 사용하여 관련 엔터티에서 데이터를 검색해야합니다.EF에서 게으르고 열정적으로 결합하기
이 두 가지 접근 방식을 결합하는 것이 좋으며 설정할 필요가있는 특정 구성이 있습니까?
네, 그렇게 할 수 있습니다. 그리고 당신 같은 실제 상황에 따라 좋은 연습입니다.
Lazyloding
이 필요하지 않은 경우 해당 특정 방법에서 아래 표시된 것처럼 비활성화 할 수 있습니다.
public List<PropertyListDto> SearchProperties(AdditionalSearchInput input)
{
_context.Configuration.LazyLoadingEnabled = false;//to remove lazy loading
///your code
}
참고 : 엔티티 프레임 워크 4에서와 게으른로드 이상은 기본적으로 사용됩니다. disable
은 전 세계적으로 DbContext
레벨 또는 위에 표시된대로 query level
에 선택적으로 표시 할 수 있습니다.
여기에 DbContext
레벨로하는 방법입니다.
public partial class MyDBEntities : DbContext
{
public MyDBEntities(): base("name=MyDBEntities")
{
this.Configuration.LazyLoadingEnabled = false;
}
}
업데이트 : 표시된대로 각각의 방법에 query level
에주고 필요하지 않습니다 below.Then 당신은 constractor
수준에서 비활성화 할 수 있습니다 당신이 필요하지 않습니다 lazyloding 50 컨트롤러 . 그것을 구현하는 것이 매우 빠른 방법이라고 생각합니다.
public class YourAppService : IYourAppService
{
private readonly YourDbContext _context;
public YourAppService(YourDbContext context)
{
_context = context;
_context.Configuration.LazyLoadingEnabled = false;//to remove lazy loading
}
}
기본적으로 지연로드가 설정되어 있습니까? 그래서 열망하는로드를 사용해야한다면 지금 설명했던 것을 할 것입니다. – ruud
예, 기본값은'on'입니다. 예를 들어,'Eager loading '을 사용할 때 위와 같이 할 수 있습니다. – Sampath
만약 내가'this.Configuration.LazyLoadingEnabled = false;'를 할 경우, _Include_ 메소드를 사용하여 각 메소드에 eager loading을 구현해야합니까? 이 구성에 기반하여 GET 메서드의 결과는 무엇입니까 (관련 엔터티가로드되었는지 여부)? – ruud
두 가지를 결합 할 수는 있지만 지정된 시나리오는 열망하는로드만으로 수행 할 수 있습니다. 가능하다면 오직 하나의 접근 방식을 고수하는 것이 훨씬 낫습니다. –
이 질문이 "좋은 연습"보다 조금 더 많은 의견을 기반으로 할 것인지 궁금합니다. –
물론 의견을 기반으로합니다. 어떤 요구 사항을 모른 채 좋은 연습을 어떻게 추천 할 수 있습니까? –