0

我正在尝试将下拉选择的值传递给数据库我的数据合同具有以下代码

      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());

它构建良好,但在运行时出现异常

4

3 回答 3

1

Entity Framework 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; }
}

这不是一个很好的解决方案,但它是解决问题的可靠解决方案,您仍然可以在页面上绑定它并将其视为其他代码中的枚举本身。

于 2013-04-08T20:07:35.720 回答
0

这行得通

eventToBeChanged.RegardingObjectType = (int)newevent.RegardingObjectType;

代替

  eventToBeChanged.RegardingObjectType = int.Parse(newevent.RegardingObjectType.ToString());
于 2013-04-08T22:01:27.960 回答
0

如果要将字符串值映射到数据库,请查看以下答案:

如何在实体框架 4 中映射枚举属性

正如@IronMan84 指出的那样,我不确定这是否适用于多字枚举 - 但它很有用并且它仍然有效。

于 2013-04-08T22:47:28.580 回答