2012-12-17 94 views
1

我正在使用EntityFramework並且有一個LinkStatusID列,它是一個tinyint,它在C#中被生成一個字節。枚舉鑄造到一個字節

public enum LinkStatus 
{ 
    Added = 0, 
    Deleted = 1 
} 

但是這給:

a.LinkStatusID = (byte)Enums.LinkStatus.Deleted; 

是有一個更優雅的方式來構建這個?

EDIT2爲LastCoder:

public enum LinkStatus : byte 
{ 
    Added = 0, 
    Deleted = 1 
} 

    var blah = Enums.LinkStatus.Added; 
    var ty = blah.GetType(); 

    var blah2 = (byte)Enums.LinkStatus.Added; 
    var ty2 = blah2.GetType(); 

這不工作(如我所料),但是第一次的答案here解釋了原因。

EDIT3: EF並不是這個sln到達DB的唯一途徑,所以我非常希望在代碼中保持Enums的顯式。感謝EF5 Enum的建議!

+5

EF5具有本機枚舉支持。 – SLaks

回答

2
public enum LinkStatus : byte 

會避免顯式強制轉換。

+0

感謝 - 然而,看到上面的代碼,沒有像我期望的那樣工作...除非我錯過了什麼? –

0

您應該使用本機枚舉支持,如上面提到的SLak(教程is here)。如果你不想這樣做,你可以做別的事情,我發現了以前EF支持它:

public int CountryInt{get;set;} 
public Countries Country 
     { 
      get { return (Countries) this.CountryInt; } 
      set { this.CountryInt = (int) value; } 
     } 

利用這一點,那麼,讓你剛纔設置的國家變量,並將它自動進入到DB作爲正確的int值。