【问题标题】:Entity Framework 5 RTM Code First enum support broken: enums in other namespacesEntity Framework 5 RTM Code First 枚举支持损坏:其他命名空间中的枚举
【发布时间】:2012-11-23 10:42:33
【问题描述】:

这是关于 Entity Framework 5 RTM Code First。

当我映射具有现有枚举的实体时,我收到此错误:

找不到概念的对应对象层类型 输入“[完整枚举类型名称]”

实际上它在DbContext 的同一命名空间中查找整个枚举。

其他一些问题 (Using Enums with Code First & Entity Framework 5) 的答案指向一些博客文章,其中有关于如何使其工作的方法,但它谈到了数据库优先/模型优先方法。

如何使用 Code-First 方法添加 EDM 枚举类型?

【问题讨论】:

  • 你能分享你的模型吗?正如卢卡斯指出的那样,确实存在一个错误。它应该很快在 EF6 中修复。在 EF5 中 - 取决于型号,它可能会或可能不会出现。如果修复了错误,您是否能够迁移到 EF6?
  • @Pawel 今天是星期天,这是我的工作,但它没有什么秘密:它只是一个枚举类型,模型中具有这种类型的属性,我使用 code first:blah.Property(e => e.EnumProperty)。枚举类型与DbContext 在不同的程序集中。相信应该是所谓的bug吧……
  • 这个问题现在在 EF6 中得到修复 - 应该会出现在今天的夜间构建中。
  • @Pawel 我使用 EF 的项目是一个专业项目。我的意思是在商业产品中使用夜间构建是个坏主意。

标签: c# .net entity-framework .net-4.5 entity-framework-5


【解决方案1】:

恐怕现在不可能 - EF5 http://entityframework.codeplex.com/workitem/532 中存在已知错误,导致上述错误。

我正在努力解决类似的问题,但没有找到任何优雅的解决方案。我最终得到了int 列而不是枚举列。

编辑(有问题的模型):

核心组件:

public enum UserStatus { Approved, Disabled }

public interface IUser {
    public int ID { get; }
    public string Username { get; set;}
    public UserStatus Status { get; set;}
}

用户大会:

public class User : IUser {
    public int ID { get; protected set; }
    public string Username { get; set; }
    public UserStatus Status { get; set; }
}

【讨论】:

  • @LukasKabrt 我最终得到了和你一样的解决方案,但很伤心。
  • @Pawel 我的模型很简单 - 请参阅我编辑的帖子。我相信问题是由这样一个事实引起的,即 UserStatus 枚举是在不同的程序集中定义的,然后是 User 实体。顺便说一句,感谢您提供有关 EF6 的信息,我不能在这个项目中使用夜间构建,但我会检查一下。
猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多