我想定义一个用于EF5的枚举,以及一个相应的查找表.我知道EF5现在支持枚举,但开箱即用,它似乎只在对象级别支持此功能,并且默认情况下不会为这些查找值添加表格.
例如,我有一个用户实体:
public class User
{
int Id { get; set; }
string Name { get; set; }
UserType UserType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和UserType枚举:
public enum UserType
{
Member = 1,
Moderator = 2,
Administrator = 3
}
Run Code Online (Sandbox Code Playgroud)
我希望数据库生成创建一个表,如:
create table UserType
(
Id int,
Name nvarchar(max)
)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我正在使用EF Core和数据库优先方法,使用"Scaffold-DbContext"命令生成我的DbContext/Entities.
我怎样才能指导脚手架的DbContext某一个领域在一定的表格应该生成代码,使用枚举,而不是仅仅一个int?
以下是您在常规EF中的使用方法:https: //www.devu.com/cs-asp/lesson-69-mapping-enum-types-entity-properties-framework-designer/
此枚举已在代码中定义:
public enum StateEnum {
Ok = 1,
Fail = 2
}
Run Code Online (Sandbox Code Playgroud)
这就是Scaffold-DbContext给我的
public partial class Foo
{
public int Id { get; set; }
public int State { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要它创建的:
public partial class Foo
{
public int Id { get; set; }
public StateEnum State { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 语境:
我使用数据库优先方法通过 Entity Framework Core 和脚手架生成实体。每次我更改数据库中的某些内容时,我都会使用-f参数运行脚手架来重写生成的实体。到目前为止,一切都很好。在我的数据库模式中,我有一些查找表,它们用作其他表的枚举,并且这些其他表上有外键。
问题:
我想从这些查找表生成枚举,我可以在代码中使用它们。这些枚举应由查找表中的数据(Id、Value)填充。这样的事情有可能吗?
我发现人们可以忽略实体生成中的那些表,并使用value-conversions链接它们自己的枚举。但这真的是唯一的出路吗?
我的数据库架构示例:
桌子:Category
| ID | 价值 |
|---|---|
| 0 | 有氧运动 |
| 1 | 力量 |
| 2 | 肥大 |
桌子:Exercise
| ID | 姓名 | 类别 |
|---|---|---|
| 0 | 硬拉 | 1 |
| 1 | 卧推 | 1 |
| 2 | 跑步 | 0 |
所以从表中Category我想生成简单的枚举:
public enum Category {
Cardio = 0,
Strength = 1,
Hyperthrophy = 2
}
Run Code Online (Sandbox Code Playgroud)
然后我希望它在实体中使用,Exercise例如:
public partial class Exercise {
public Exercise() {
}
public int Id { get; set; }
public string Name { get; set; …Run Code Online (Sandbox Code Playgroud) c# enums scaffolding ef-database-first entity-framework-core