IRepository 패턴을 사용하여 관계형 데이터를 처리 할 때 권장되는 방법이 무엇인지 궁금합니다.IRepository 및 관계형 데이터
내 데이터베이스는 괄호 안의 열 이름 다음과 같은 테이블이 있습니다
- 계획 (PLANID, 이름,에서 CreationDate, ModifiedDate,는 viewId)
- 지역 (AreaId, 이름, NTOP, nLeft, nRight , nBottom)
- 뷰 (는 viewId, NTOP, nLeft, nRight, nBottom)
- PlanAreas을 (PLANID, AreaId)
각 계획에는 0 개 또는 여러 개의 영역이 있지만 하나의보기 만있을 수 있으므로 Plans.ViewId는 FK to Views.ViewId입니다. PlanAreas에서 두 열은 각각의 테이블에 대해 FK입니다.
내 응용 프로그램이 해당 영역에서 독립적으로 작동하고 싶을 수도 있지만 일반적으로 계획과 모든 구성 요소 (영역, 뷰)를 동시에로드, 저장, 삭제할 것입니다.
나는
public interface IPlanRepository
{
IEnumerable<MyModel.Plan> GetAll();
MyModel.Plan GetByName(string sName);
MyModel.Plan GetById(string sId);
void Delete(MyModel.Plan plan);
void SaveOrUpdate(MyModel.Plan plan);
}
public class Plan
{
public Guid Id { get; set; }
public string Name { get; set; }
public DateTime Creation { get; set; }
public DateTime Modified { get; set; }
public MyModel.View View { get; set; }
public IList<MyModel.Area> Areas { get; set; }
}
public class View
{
public Guid Id { get; set; }
public IEnvelope Envelope { get; set; } // encapsulates top, left, bottom, right
}
// etc.
계획은 상당히 복잡하다 .... 경로를 아래로 시작했습니다, 그래서 실제로 이상의 속성이있을 것이다, 그러나 이것은 좋은 시작이다. 이제 질문에 대한 :
- IViewRepository 및 IAreaRepository가 필요합니까?
- IPlanRepository에서 메소드를 구현할 때 플랜 (예 : 영역 및 뷰)에 연결된 관계형 데이터를 가져 와서 완전히 채워진 Plan 객체를 반환하는 작업을 모두 수행합니까?
플랜이 반환되면 속성을 채울 높은 수준의 "집계 도구"(더 나은 단어가 부족한 경우)가 더 좋습니까? 이런 식으로 뭔가 : 나는 그것을 잘 알고있어, 나는 상당히 빨리 그것을 할 수 있기 때문에
Plan GetPlanById(string sId)
{
Plan myplan = new Plan();
IPlanRepository planrepo = new PlanRepoImpl();
myplan = planrepo.GetById(sId);
IViewRepository viewrepo = new ViewRepoImpl();
myplan.View = viewrepo.GetByPlanId(sId);
return myplan;
}
가 지금 내 데이터 액세스를 위해 LINQ-SQL을 사용하여 계획입니다. 나는 라인의 아래 다른 것, 그러나 그것을 지금 간단하게 지키고 싶다 전환 할지도 모른다.
왜 저장소 패턴이 필요합니까? Linq2Sql 컨텍스트를 사용하지 않는 이유는 무엇입니까? –
일반적인 문제에 대한 최선의 접근법이 없기 때문에 묻습니다. 구체적인 문제에 대한 최선의 접근법이 있습니다. 그리고 정확히 무엇이 필요한지 구체화해야합니다. –
LINQ-SQL 컨텍스트가 데이터 액세스 클래스이고 내 데이터베이스 개체와 내 도메인 모델 개체 사이에 1 : 1 대응이 없기 때문에 또한 논리 레이어를 다시 작성하지 않고 데이터 액세스 전략을 변경할 수있는 유연성을 원합니다. –