我正在使用方法,使用"Scaffold- DbContext "-command来生成我的DbContext/实体。
我如何指示Scaffold,某个字段在某个表中应该生成代码以使用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; }
}发布于 2018-09-25 13:08:07
从Entity 2.1开始,EF支持值转换专门解决需要将属性映射到不同类型以进行存储的场景。
特别是对于Enum,可以使用提供的EnumToStringConverter或EnumToNumberConverter。
发布于 2018-06-14 14:14:42
EF Core 2.1中的值转换不满足您现在的需要吗?
https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions
简单的例子:
  entity.Property(e => e.MyEnumField)
            .HasMaxLength(50)
            .HasConversion(
                v => v.ToString(),
                v => (MyEnum)Enum.Parse(typeof(MyEnum),v))
                .IsUnicode(false);发布于 2018-01-13 05:45:37
我来这里是因为这个题目。不确定这在"Scaffold- DbContext“中是否有效,但在DbContext (Microsoft.EntityFrameworkCore 2.0.1.0)中,它会显式地设置枚举的基本类型,即使枚举元素的默认基础类型是int。您也可以使用Fluent API来设置默认值(尤其是在这种情况下,枚举以1开头)。
public enum StateEnum : int
{
    Ok = 1,
    Fail = 2
}枚举的批准类型为:字节、字节、短、ushort、int、uint、long或ulong。
所以我认为这对任何一个来说都是可行的。枚举(C#参考)
public class MyDbContext : DbContext
{      
    protected override void OnModelCreating(ModelBuilder builder) 
    {
        builder.Entity<Foo>().Property(x => x.State).HasDefaultValue(StateEnum.Ok);
    }
}https://stackoverflow.com/questions/44262314
复制相似问题