2009-12-01 2 views
2

ASP.NET MVC, IoC, POCO 등을 처음 접했으므로 이러한 종류의 아키텍처를 사용하는 것이 좋음을 알고 싶습니다.지연로드가 포함 된 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 인스턴스를 사용하는 것을 좋아하지 않습니다.

답변

3

나는 사용자를 얻을 때마다 UserGroups를 얻고 싶지 않습니다.

그런 다음 개체 모델에서 함께 묶지 마십시오. 복잡한 일이 빠르면 시작할수록 더 빨리 시작할 수 있습니다.

뷰에 단일 인스턴스를 넘겨주는 경우 필요한 정보 세트가있는 뷰 모델을 가질 수 있습니다.

사용자가 관련 정보를 필요로하는 경우 계속해서 관련 데이터를로드 할 수있는 대체 방법을 지적 할 수 있으므로주의해야합니다. 그런 다음 열심히로드하려는 경우이를 결정할 수있게되고 좋은 일을하지 않는 여분의 왕복을 저장합니다.

0

요격기를 사용하여보십시오 here. 당신은 당신의 객체를 깨끗하게 유지할 수 있고 공장 내 모든 초기화 작업을 수행 할 수 있습니다.

관련 문제