2013-03-20 2 views
2

.NET에서 엔터티를 만들고 그 속성을 설정하면 모범 사례에 대한 조언이 필요합니다..NET 엔터티 속성이 열거 형 또는 개체로

(전체, NotStarted, 진행중)
ID (int)를
텍스트 (문자열)
주 :

이의 내가 세 가지 속성이 있습니다 '도도'라는 개체를 가지고 가정 해 봅시다, 간단한 예제를 촬영하려면

My Todo 개체는 SQL Server 데이터베이스에 저장되며 'Type'속성은 int로 저장됩니다. State 속성에는 이와 관련된 다른 정보 나 메서드가 없으므로 Todo 인스턴스의 완전성을 표시하기 만하면됩니다. 다음과 같이

나는 Todo.cs에서 (도도 클래스 외부) 열거를 생성해야합니다

public enum TodoState 
{ 
    NotStarted = 0, 
    InProgress = 1, 
    Complete = 2 
} 

된 후, 나는 내 할일 클래스를 만들 수 있습니다으로 :

public class Todo 
{ 
    public int Id { get; set; } 
    public string Text { get; set; } 
    public TodoState State { get; set; } 
} 

또는해야 내가 내부 열거 형 및 정적 생성자가 TodoState 클래스를 만드는거야? 아니면이 작업을 수행하는 완전히 다른 방법이 있습니까?

이 사례에서이 목표를 달성하는 가장 좋은 방법이라고 생각하는 것 이외에 이러한 종류의 문제에 접근하는 산업 표준 방법은 무엇입니까? 미리 감사드립니다.

답변

2

버전 5 (.NET 4.5)부터 Entity Framework는 enum 속성을 지원합니다. 자세한 내용은 Enum Support - Code FirstEnumeration Support in Entity Framework을 참조하십시오.

이것은 까지 매우에 대한 가장 쉬운 해결책입니다.

코드가 그대로 보인다.

  • 표준 연습을 열거 포함 .cs 파일 당 하나 개의 유형을 정의하는 것입니다, 그래서 TodoState.csenum TodoState를 이동하는 것이 좋습니다 : 여기에 몇 가지 사소한 제안을 비록 난 당신이 올바른 궤도에 있다고 생각.
  • TodoState 이름으로 작동하지만, 나는 CompletionState이 무엇을 나타내는 지 설명하고 있다고 생각합니다.
+2

EF5는 .NET Framework 4.5 이상 (Visual Studio 2012)에서만 열거 형을 지원합니다. VS2010의 EF5는 지원하지 않습니다 (기술적으로 EF4.4이지만 5를 설치할 때 설치됩니다) –

+1

@MystereMan 그것을 지적 해 주셔서 감사합니다. –

+2

@MystereMan 그러나 EF6은 .NET 4에서 enum을 지원합니다. http://blogs.msdn.com/b/adonet/archive/2012/10/30/ef6-alpha-1-available-on-nuget.aspx – Phil