0

재사용 가능한 EF 모델 및 인터페이스 집합을 작성하려고합니다.EF 인터페이스 - 관련 형식으로 개체 가져 오기

public interface ICategorised { 
    int CategoryID { get; set; } 
    Category Category { get; set; } 
} 

을 그리고 여기에 카테고리 객체의 모습입니다 :

public class Category { 
    public int CategoryID { get; set; } 
    public string Title { get; set; } 
    public Type Type { get; set; } // Is 'Type' the wrong type for this? 
    public string Description { get; set; } 
} 

나는 확실히이의 원리처럼하지만 약간 방법에 난처한 해요 다음과 같이 하나는 이러한 인터페이스는 ICategorised라고하고, 보이는됩니다 ICategorised을 구현하는 객체의 Type을 가져오고 설정하는 것이 가장 좋습니다. ..

public class Car : ICategorised { 
    public int CarID { get; set; } 
    public string CarName { get; set; } 
    public int CategoryID { get; set; } 
    public Category Category { get; set; } 
} 

어떻게 든 Type==CarCategories를 조회 할 수 있습니다 : 내 최종 목표는 다음과 같은 객체를 생성 할 수있는 기능입니다.

+0

몇 가지 유형이 발생할 것으로 예상하십니까? –

+0

처음에는 부부였습니다. 내 계획은 이것, 비즈니스 로직, 뷰 등 내가 가능한 한 쉽게 재사용 할 수 있도록 함께 쓰고있다. – Phil

답변

1

현재 유형을 ICategorized으로 재검토해야한다고 생각합니다. CategoryICategorized에있는 모든 항목에 대한 정의를 제공하기 때문에 실제로는 Category이어야하지만 현재 실제로 구현하지는 않습니다. ICategorized을 유지하려면 Category을 첫 번째 포인트로 구현하십시오.

두 번째로 Category abstract을 직접 인스턴스화해서는 안되기 때문에 작성합니다. 그런 다음 Car 및 생성 한 다른 분류 된 클래스는 abstract Category에서 직접 파생됩니다. 위의 설명대로 계층 구조를 변경하는 경우 본질적으로 역시 ICategorized이됩니다.

내가 생각한대로 달성하면 미래의 유형에 맞게 확장 가능한 더 깨끗한 계층 구조가됩니다. Category 하위 클래스가 Car과 같이 명시적인 Type 집합을 가지므로 Type을 직접 쿼리 할 수 ​​있습니다.

호프가 도움이되거나 적어도 올바른 방향으로 나아가는 희망입니다.

+0

이것은 훨씬 더 나은 접근법입니다. ICategorised를 삭제하고 분류 된 각 유형에 대해 파생 클래스가있는 추상 카테고리 클래스를 대신 만들었습니다. – Phil