2011-08-02 9 views
1

추적 변경이 필요한 데이터 모델이 있습니다. 한 달에 내 모델에 대해 ~ 100,000 건의 변경/업데이트가있을 수 있습니다. 내 모델에는 작업 완료 방법 추적이 포함되며 세 가지 기본 유형으로 나눌 수 있습니다.변경 사항을 추적하기 위해 어떤 모델 구조를 사용해야합니까?

나는 현재이 같은 내 모델이 있지만, 각 샌드위치는 매우 다르게 이루어지기 때문에 3 별도의 컨트롤러로 샌드위치의 종류를 구분 한 :

public class Sandwich 
{ 
    public int Id { get; set; } 
    public int SandwichTypeId { get; set; } //This is an enum type 
    //About a dozen other properties that define HOW the sandwich gets made 
} 

내가 이런 식으로 떨어져 휴식과 더 많은 그것을 일치 할 수 내 컨트롤러 :

public class PeanutButterAndJellySandwich 
{ 
    public int Id { get; set; } 
    //No enum sandwich type 
    //About a dozen other properties that define HOW the sandwich gets made 
} 

public class HamSandwich 
{ 
    public int Id { get; set; } 
    //No enum sandwich type 
    //About a dozen other properties that define HOW the sandwich gets made 
} 

// 등

2 부 질문 :

  1. 모델을 분할하는 데 이점이 있습니까?
  2. 그렇다면 별도의 추적 테이블을 추가해야하기 때문에 이러한 이점을 누릴 수 있습니까?

감사합니다.

답변

1

EF에서는 샌드위치 클래스의 서브 클래 싱과 특정 컨트롤러의 서브 클래 싱 같은 작업을 수행했습니다.

public class Sandwich 
{ 
    public int? CurrentVersion { get; set; } 
    public int Id { get; set; } 
    public int SandwichTypeId { get; set; } //This is an enum type 
    //About a dozen other properties that define HOW the sandwich gets made 
} 

이 방법은, 하나의 샌드위치, 모든 이전 버전을 많이 가질 수 있습니다 반면에

, 내가 하나 더 필드를 생성, 예를 들어,에 의해이 같은 일을 처리했습니다 그것은 현재의 것을 가리킬 것입니다. 내 업데이트 루틴에서 복제본을 만들었습니다 (이전 버전의 CurrentVersion이 현재 업데이트 된 버전 ID를 가리킴).

물론 이것은 샌드위치를 ​​나열하는 다른 곳을 수정하지 않아도 보이는 부분으로 변경해야합니다.

바로 이전 또는 다음 버전을 참조해야하는 경우 데이터베이스 검색을 피하려면 int? PreviousVersion 및/또는 int? NextVersion을 만들 수 있습니다.

+0

감사합니다. 오늘 제가 살펴볼 흥미로운 생각입니다. – trevorc

관련 문제