2014-07-10 14 views
0

我想創建class Person其中有int Id; string Name等,但有一件事我不知道如何解決。ASP .NET中的枚舉類對象的(Person)狀態字段類MVC

我會打電話的每一個人和呼叫後,我想設置地位調用的結果,我想只有那些:"SUCCESS""DIDN'T WANT TO TALK""CALL LATER"DID NOT PICK UP THE PHONE而這一切沒有更多的。當然,class Person的所有對象都將位於LocalDb數據庫中。

據我所知,它被稱爲數據庫中的字典實體。

我應該如何在C#中創建一個類,兩個類?有沒有什麼方法可以解決這個問題,只添加可能的值?

我不知道如果實體框架與處理枚舉。有人可以寫一個Person的最小樣本,這個Entity Framework能理解的Enum類型嗎?

+0

enum有什麼問題? enum CallStatus {Success,CallLater等} –

+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,因爲這是您的FK。虛擬狀態屬性是您的導航屬性。因此,當您在通話中訪問狀態時,您可以使用Call.Status.NameCall.Status.Id來訪問您要使用的狀態屬性。

+0

有人可能會爭辯說,數據庫的目的是存儲數據,而不是顯示它... –

+0

@RytisI這可能是有爭議的。但是在現實世界中,人們會看數據庫,SSRS報告只是一個原因。如果你可以不費很大力就可以使數據可讀,那你爲什麼不呢? – James