转换为枚举类型

8
我刚刚获得了Visual-Studio 2012专业版,并使用实体框架(5.0)设计器。 我一直在尝试将属性转换为Enum,根据这个微软视频,我右键单击属性,然后选择Convert to Enum (2:06处)-但是我的上下文菜单中没有转换选项。
在这里,我正在尝试将Role转换为Enum。 我已将Role设置为Int32。

enter image description here

我做错了什么?
4个回答

8
紧跟帖子中的视频,我打开了“模型浏览器”以手动添加一个枚举。添加完成后,将角色设置为我创建的枚举,并测试是否现在可以在属性上“转换为枚举”。我将类型更改回Int32,然后右键单击属性,结果惊奇地发现在上下文菜单中出现了“转换为枚举”选项!
所以,如果您遇到问题,这些是我用来启用“转换为枚举”选项的步骤。在我看来,这是一种hack方法,因为现在我无法通过新的解决方案和项目重现此行为。显然,一旦第一次打开了“模型浏览器”(或者完全按照以下步骤),它就会显示“转换为枚举”选项。
-1. 使用快速搜索窗口,在其中输入“模型浏览器”,然后打开它。
-2. 从数据模型的“枚举类型”右键单击,选择“添加新的枚举类型...”。
-3. 将属性设置为该枚举,滚动到组合框中列出的类型列表底部,然后选择该枚举。

1
很奇怪,我在我的模型浏览器中找不到“枚举类型”文件夹。 - Abdulsattar Mohammed
3
请注意,如果您的目标是 .Net Framework 4.5,则“枚举类型文件夹”才会出现。 - Alberto León

4

我也遇到了这个问题!!我将实体框架从4改为4.5,问题得到解决!;)


3

当我遇到同样的问题时,解决方法是将目标框架设置为“.NET Framework 4.5”。


0

当您尝试将属性转换为枚举属性时,该属性的类型是什么?仅当属性的类型是可以成为枚举基础类型之一的类型 - Edm.Byte、Edm.SByte、Edm.Int16、Edm.Int32或Edm.Int64时,才可使用转换为枚举选项。如果属性类型不是这些类型之一,则无法直接将其转换为枚举,因为设计师不知道基础类型应该是什么,更重要的是它是否适用于您的数据库。


如果你注意到了,我发帖时说的是一个Int32类型。 - Chuck Savage
我可能错过了。你有重现这个问题的步骤吗(或者有一个项目可以打开来查看并调查)? - Pawel
在我的回答中,我说在“修复”之后我无法重现它。我唯一能想到的选择是重新安装VS2012并添加新项目C# Lightswitch,然后添加C#类库,添加ADO.Net实体项,右键单击添加实体(不使用工具箱和不点击Model Browser),然后添加一个属性,将其类型设置为int32,然后尝试右键转换为枚举。简而言之,这就是我开始做的事情,尽管在创建枚举之前,我先添加了几个其他实体和一些关联。 - Chuck Savage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接