2011-04-26 4 views
0

DB (응용 프로그램에서 사용하는)에 저장되어있는 정의를 응용 프로그램의 소스 코드에 사용하는 방법에 대한 아이디어를 얻고 싶습니다.DB에 저장된 정의를 소스 코드의 정의에 사용하는 방법은 무엇입니까?

예 :

데이터베이스

  • 자동차
  • CarTypeDefinitions

CarTypeDefinitions의 행에 외래 키 Cars 링크 열에 따라서 유형을 정의 Cars에 들어있는 자동차.

Cars'애스턴 마틴 DB8', '레인지 로버''벤츠 악트 로스' 같은 항목이 포함되어 있습니다.

CarTypeDefinitions'스포츠카', 'SUV''트럭' 같은 항목이 포함되어 있습니다.

소스 코드

지금 나뿐만 아니라 내 소스 코드에서 이러한 정의를 사용할 수 있도록하고 싶습니다. 따라서 어떻게 든 우리는 CarTypeDefinitions 테이블의 행과 소스 코드의 (바람직하게) 유형 안전 구현 간의 일종의 매핑을 생성해야합니다.

하나의 가능한 구현

(그리고 나는 특히 다른 솔루션 또는 이것에 대한 의견을 찾고 있어요) 내 마음에 오는 첫번째 것은 EnumECarTypeDefinitions을 생성하는 것입니다.

public enum ECarTypeDefinitions 
{ 
    SportsCar = 1, 
    SUV = 2, 
    Truck = 3 
} 

이제 유형 안전 Enum을 사용할 수있게되었습니다. 이 같은 :

public bool IsSportsCar(Car currentCar) 
{ 
    return (currentCar.CarType == ECarTypeDefinitions.SportsCar); 
} 

이 열거의 내용은 자동으로 생성 된 CarTypeDefinitions 테이블의 내용 (열거 형의 이름과 정수 값을 두 개의 추가 열을 추가)에서 일 것이다.

이렇게하면 다른 방식으로도 작동합니다. ECarTypeDefinitionsEnum에서 CarTypeDefinitions DB 테이블의 내용을 생성하십시오.

이 문제를 해결하는 다른 방법에 대해 듣고 싶습니다. 어떻게 이걸 처리 했니?

+0

설명하는 것은 본질적으로 [개체 관계 매핑]입니다 (http://en.wikipedia.org/wiki/Object-Relational_Mapping). 제공된 링크에서 시작하여 더 깊게 파고 들어가서 결국 ORM을 원하는 언어로 사용하고 싶을 것입니다. – darioo

+0

포인터를 가져 주셔서 감사합니다. 우리는 이미 응용 프로그램 개발에 C#과 함께 Entity Framework 4.0을 사용하고 있습니다. EF가 사용할 개체를 생성하는 동안 (예 :'CarTypeDefinition') 우리는 어떤 종류의 매핑이 필요합니다. 또는'CarTypeDefinition' 개체의 특정 인스턴스가 스포츠카를 설명한다는 것을 어떻게 알 수 있습니까? –

답변

0

나는 당신이 제안한대로 그렇게합니다. 일부 다른 사람들은 모든 상수를 "조회"테이블에 결합하는 것을 선호합니다. 여기에 찬반 양론 중 일부의 예를 볼 수 있습니다. http://weblogs.foxite.com/andykramek/archive/2009/05/10/8419.aspx

편집 : 다음 아이디어가 도움이 될 것입니다.대해서 typeof 사용

public class CarTypeDefinition 
{ 
    ... 
    public string typeName; 
} 

가 (당신이 가진 각각의 유형에 대한) 새로운 속성을 채 웁니다 :

public class SportsCarType 
{ 
} 

지금 CarTypeDefinition에 속성을 추가

각 차량 유형에 대한 클래스를 작성

... 
carTypeDefinition.typeName = typeof(SportsCarType).Name; 
... 

마지막으로 새로운 IsSportsCar 방법 :

public bool IsSportsCar(Car currentCar) 
{ 
    return (currentCar.CarType.typeName == typeof(SportsCarType).Name); 
} 

저는 Entity Framework에 익숙하지 않으므로 이런 종류의 작업을보다 명확하게 수행 할 수있는 방법이 있습니다. 또한 C#에서 약간 녹슬 었습니다.

+0

열거 형을 사용하지 않는 방법이 있는지 궁금합니다. 나는 동료와 일찍이 토론을하고 있었고 우리는이 질문에 대한 결론에 도달하지 못했습니다. –

+0

수정 사항을 확인하여 영감을 불러 일으켰는지 확인하십시오. – splonk

관련 문제