2014-07-10 4 views
0

의 enumlike 개체 (사람) 상태 필드 클래스 int Id; string Name 등을 포함하는 class Person을 만들고 싶습니다. 그러나 해결 방법을 모르는 한 가지가 있습니다.ASP.NET MVC

나는 모든 사람을 호출됩니다 및 호출 후 나는 호출의 결과에 대한 상태를 설정하려는 나는 만 싶지 : "SUCCESS", "DIDN'T WANT TO TALK", "CALL LATER", DID NOT PICK UP THE PHONE하고 더 이상 전부입니다. 물론 class Person의 모든 개체는 LocalDb 데이터베이스에 저장됩니다.

내가 아는 한 데이터베이스의 사전 엔티티라고합니다.

C# 한 클래스, 두 클래스에서 어떻게 작성해야합니까? 가능한 값만 추가하려면이 문제를 해결할 방법이 있습니까?

엔티티 프레임 워크가 enum을 처리하는지 모르겠습니다. 누군가 Entity Framework가 이해할 수있는 Person 및이 열거 형의 최소 샘플을 작성 했습니까?

+0

열거 형에 문제가 있습니까? enum CallStatus {Success, CallLater, etc.} –

+0

@RytisI Entity Framework에서 어떻게 처리 할 것인지 잘 모르겠습니다. – Yoda

+0

@Yoda http://msdn.microsoft.com/en-us/data/jj248772.aspx –

답변

1

엔티티 프레임 워크는 열거 형을 처리 할 수 ​​있지만 가독성 측면에서 보면 큰 연습은 아닙니다. 앞으로 데이터베이스에서 데이터베이스를보고 있거나보고하는 사람이 의미없는 정수만 표시된다는 것을 의미합니다.

더 좋은 방법은 다른 엔터티를 사용하고 원하는 값으로 데이터베이스를 시드하는 것입니다.

public class Call 
{ 
    ..... //some other properties you need 
    public int StatusId {get;set;}  
    public virtual Status Status {get;set} 
} 

public class Status 
{ 
    public int Id {get;set;} 
    public int Name {get;set;} 
} 

그런 다음 3 가지 옵션을 상태로 분류하면됩니다.

통화를 추가하거나 업데이트 할 때 상태의 시드 된 ID를 StatusId으로 할당하기 만하면됩니다. 가상 상태 속성은 탐색 속성입니다. 따라서 통화 상태에 액세스 할 때 Call.Status.Name 또는 Call.Status.Id을 사용하여 사용하려는 상태 속성에 액세스 할 수 있습니다.

+0

데이터베이스의 목적은 데이터를 저장하고 표시하지 않는 것이라고 주장 할 수 있습니다 ... –

+0

@RytisI 논쟁의 여지가 있습니다. 그러나 현실 세계에서 사람들은 데이터베이스를보고 SSRS보고는 단지 하나의 이유 일뿐입니다. 많은 노력 없이도 데이터를 사람이 읽을 수있게 만들 수 있다면 왜 그렇지 않습니까? – James