【发布时间】:2013-05-07 13:08:48
【问题描述】:
我有一张名为DynamicControl 的表。它有一个名为ControlType 的属性,在SQL Server 2008 数据库中属于nvarchar(255)。
在代码中,我希望属性值是一个字符串,但它的字符串值必须来自枚举的字符串表示形式,如下所示:
public enum ControlType
{
TextBox,
TextArea,
Password,
RadioButton,
Checkbox,
DropDownList,
MultiSelectList,
DatePicker,
TimePicker,
DateTimePicker
}
我该怎么做?
更新 我忘了添加一点重要的信息,没有提供,这听起来像是一个愚蠢的问题。问题是:我没有使用 POCO。我受限于使用实体框架生成的模型类。如果我正在编写 POCO,我只需将数据类型更改为枚举。但是,由于我使用的是生成的模型,这样做会导致 EDMX 标记和模型类之间存在差异。
更新我的问题是,我如何告诉 Entity Framework 在 EDMX 中生成正确的标记,以便所述属性的类型是 ControlType 枚举而不是字符串或 Int32?
因此,我的问题是不是 如何将枚举转换为字符串,反之亦然。
【问题讨论】:
-
你不明白这种枚举类型的任何属性都是整数而不是字符串吗?
-
是的,我愿意。如果我正在编写 POCO,我会编写一个属性设置器来进行翻译。不过,我正在使用实体框架生成的类。
-
尚不清楚查尔斯的建议不起作用的原因,这基本上是巴特杜德的建议,只是提供了更多细节。使用您刚刚分享的相关信息更新您的问题。
-
这些建议可行。但是每次我更新我的模型时,手写的属性都会被模型生成的类覆盖。我需要一种方法来告诉 EDMX 生成器我希望某个属性为枚举类型,以便它在 EDMX 中吐出正确的标记。
-
这只是告诉我不应该使用手写的peropety。如果枚举属性实际上被称为
ControlType,那么使用它似乎很奇怪。
标签: c# entity-framework entity-framework-4 entity-framework-5