【发布时间】:2017-05-30 12:28:18
【问题描述】:
我正在使用 EF Core 和数据库优先方法,使用“Scaffold-DbContext”命令生成我的 DbContext / Entities。
我如何指示 Scaffold-DbContext 某个 table 中的某个 field 应该生成使用 Enum 而不是 int 的代码?
这就是你过去在普通 EF 中的做法: https://www.devu.com/cs-asp/lesson-69-mapping-enum-types-entity-properties-framework-designer/
示例
此枚举已在代码中定义:
public enum StateEnum {
Ok = 1,
Fail = 2
}
这是 Scaffold-DbContext 给我的
public partial class Foo
{
public int Id { get; set; }
public int State { get; set; }
}
这就是我想要它创建的:
public partial class Foo
{
public int Id { get; set; }
public StateEnum State { get; set; }
}
【问题讨论】:
-
目前没有办法在运行scaffold-dbcontext时创建枚举属性。这仅仅是因为,枚举存储为 int(或枚举在数据库中的基础类型),并且在构建模型时,EF 会查看元数据,因此没有关于列是 int 与 enum 的信息。在搭建脚手架后,您始终可以将属性类型从 int 更改为 enum,这样就可以正常工作了。