如何在实体框架中用枚举替换 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