如何在实体框架中用枚举替换 Int 属性?

Posted

技术标签:

【中文标题】如何在实体框架中用枚举替换 Int 属性?【英文标题】:How do I replace an Int property with an Enum in Entity Framework? 【发布时间】:2010-09-26 01:47:57 【问题描述】:

我有一个实体类,它的属性具有数据类型 Int 的基础 db 列,但实际上我希望这个属性是 Enum。有没有办法指定这个属性返回一个枚举?

【问题讨论】:

【参考方案1】:

间接的,比如so。

就我个人而言,我将 storage int 设为公开(例如 DbFoo,其中 enum 属性为 Foo)——这样我仍然可以针对列编写 lambdas 以在数据库中执行,例如:

where row.DbFoo == SomeConstant

如果您不公开存储值,则无法做到这一点。您同样可以将其保留在内部,并在上下文中使用一些方法来进行过滤......这是我今天早些时候写的:

public IOrderedQueryable<User> Administrators

    get  return Users.Where(x => x.DbUserType == User.UserTypeAdmin)
             .OrderBy(x => x.Name);

User.UserTypeAdmin 是我的内部常量。在这种情况下,我不能使用可区分的子类,因为它会干扰 ADO.NET 数据服务。

【讨论】:

我用了同样的方法,效果很好。直到 EFF 默认支持枚举...

以上是关于如何在实体框架中用枚举替换 Int 属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在实体框架中使用 unsigned int / long 类型?

如何在实体框架和函数中处理空值

如何在 Hibernate 中用 TableGenerator 替换已弃用的 MultipleHiLoPerTableGenerator

Swift/IOS/CoreData:如何在自动生成的 CoreData 类中将 var 定义为枚举类型?

如何在 C# 中用 %20 替换所有空格?

如何使用 AutoMapper 将 json 请求 dto 中的 OData 枚举字符串映射到实体枚举属性