2011-09-27 84 views
0

我使用EF June CTP,它具有簡單枚舉支持。我有一個MVC 3視圖,它具有複選框,當提交時將其作爲一些枚舉的數組進行檢索。EF Code-First - 存儲IEnumerable枚舉

public enum CheckBox : byte 
{ 
    VALUE_1 = 1, 
    VALUE_2 = 2, 
    ... 
} 

我需要採用enum((IEnumerable))的這種連接,並通過代碼優先方法存儲它。目前,該財產被完全忽略。

我不確定最終是否會在作品中創建單獨的一對多表格或將所有值存儲在一列中,但任何想法都很好。只需要存儲它。一旦它存儲了它,如果它不創建單獨的一對多表並以某種方式將其存儲在同一個表中作爲一些分隔字符串,但我可能會到達這裏,它最終會非常棒。

謝謝。

UPDATE 1 試圖添加[標誌]的枚舉無濟於事。在生成表格時它會被完全忽略。我的模型屬性是:

public IEnumerable<CheckBox> Values { get; set; } 
+0

你爲什麼不使用標誌? – SLaks

+0

使用6月CTP的enum文檔,他們說要使用:byte。你是否只是簡單地使用標記會突然讓EF存儲值? – TimJohnson

+0

它會將值存儲在一個數字中,就像其他'[Flags]'枚舉一樣。 – SLaks

回答

0

您應該使用,而不是一個集合的[Flags]枚舉:

[Flags] 
public enum Checboxes { 
    SomeValue = 1, 
    OtherValue = 2, 
    ThirdValue = 4 
} 

public Checkboxes Boxes { get; set; } 

Boxes = Checkboxes.SomeValue | Checkboxes.OtherValue; 
+0

我應該將我的愚蠢問題限制在2,但在控制器中我收到IEnumerable 。我如何獲取並將其轉換爲Value1 |值2 |值3? – TimJohnson

+0

一些有用的鏈接:1)http://stackoverflow.com/questions/6972937/how-do-i-convert-ienumerableenum-to-enum-in-c 2)http://stackoverflow.com/questions/4171140/迭代環比價值型 - 標誌 - 枚舉。感謝您的幫助 – TimJohnson