我正在尝试将下拉列表选定值传递给数据库 我的datacontracts有以下代码
public EnumTypes.RegardingObjectType RegardingObjectType { get; set; }
public Guid RegardingObjectId { get; set; }
enumtypes.cs具有以下内容
public class EnumTypes
{
public enum RegardingObjectType
{
UnknownOrNone = 0,
Account = 1,
Cellsite = 2,
eventdal.cs具有以下内容
private t_Event MapEventToEntity(Event newevent, t_Event eventToBeChanged)
{
eventToBeChanged.RegardingObjectType = int.Parse(newevent.RegardingObjectType.ToString());
它构建正常但在运行时遇到异常
答案 0 :(得分:1)
实体框架4不支持将枚举用作列类型。如果您希望对枚举进行本机支持,则需要升级到Entity Framework 5。
如果您绝对必须使用EF 4(因为已经在其中实施的项目),那么我建议你这样做:
public int RegardingObjectTypeAsInt { get; set; }
[NotMapped]
public EnumTypes.RegardingObjectType RegardingObjectType
{
get { return (EnumTypes.RegardingObjectType) this.RegardingObjectTypeAsInt; }
set { this.RegardingObjectTypeAsInt = (int)value; }
}
这不是一个漂亮的解决方案,但它是解决问题的一个可靠方法,你仍然可以在你的页面上绑定它并在其他代码中将其视为枚举。
答案 1 :(得分:0)
这很有用
eventToBeChanged.RegardingObjectType = (int)newevent.RegardingObjectType;
而不是
eventToBeChanged.RegardingObjectType = int.Parse(newevent.RegardingObjectType.ToString());
答案 2 :(得分:0)
如果要将字符串值映射到数据库,请查看以下答案:
How to map an enum property in Entity Framework 4
正如@ IronMan84指出的那样,我不确定这是否适用于多字枚举 - 但它很有用并且它可以正常工作。