2011-09-27 82 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