문제

나는 ASP.NET MVC, IOC, POCO 등을 처음 접 했으므로 그런 종류의 아키텍처를 사용해도 괜찮다는 것을 알고 싶습니다.

이것은 내 데모 프로젝트입니다.

Project.core (이 어셈블리는 모든 프로젝트에서 참조했습니다)

public class User
{
   public string Name {get; set;}
   public List<UserGroup> UserGroups{get; set}
}
public class UserGroup
{
   public string Title{get; set;}
}
public interface IUserService 
{
   User GetById(int id);
}
public interface IUserGroupService 
{
   List<UserGroup> GetByUser(User user);
}

좋아 보이지만 이런 식으로 게으른 하중을 어떻게 사용할 수 있습니까? 나는 얻고 싶지 않다 사용자 그룹 내가 얻을 때마다 사용자.

내 생각은 내 수정하는 것입니다 사용자 이런 식으로 수업 :

public class User
{
   public string Name {get; set;}
   public List<UserGroup> UserGroups
   {
       get { return _groups ?? (_groups = Services.UserGroupService.GetByUser(this)); }
       set { _group = value;}
   }
}

public class Services
{
    // this class populates some kind with Unity
    public static IUserGroupService UserGroupService {get; set;}
}

내 솔루션의 단점은 무엇입니까? 나는 내 poco 객체가 사용하는 것을 좋아하지 않는다 iuserGroupService 사례.

도움이 되었습니까?

해결책

사용자를 얻을 때마다 사용자 그룹을 얻고 싶지 않습니다.

그런 다음 객체 모델에서 함께 묶지 마십시오. 복잡해지면 더 많이 시작합니다.

단일 인스턴스를 뷰에 전달하기 위해 그렇게하는 경우 필요한 정보 세트가 포함 된 뷰 모델을 가질 수 있습니다.

관련 정보 세트로 사용자에게 지속적으로 필요로하는 경우주의를 기울이면 모든 관련 데이터를로드하는 대체 방법을 가리킬 수 있습니다. 그런 다음 열망하는지 결정하고 좋은 일을하지 않는 여분의 왕복을 저장할 수 있습니다.

다른 팁

인터셉터 사용을 살펴보십시오 여기. 객체를 깨끗하게 유지하고 공장 내에서 모든 초기화를 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top