I'm using EF Core with database-first approach using the "Scaffold-DbContext"-command to generate my DbContext / Entities.
How can I instruct Scaffold-DbContext that a certain field in a certain table should generate code to use an Enum instead of just an int?
This is how you used to do it in regular EF: https://www.devu.com/cs-asp/lesson-69-mapping-enum-types-entity-properties-framework-designer/
This enum is already defined in code:
public enum StateEnum {
Ok = 1,
Fail = 2
}
This is what Scaffold-DbContext gives me
public partial class Foo
{
public int Id { get; set; }
public int State { get; set; }
}
This is what I want it to create:
public partial class Foo
{
public int Id { get; set; }
public StateEnum State { get; set; }
}
Doesn't value conversion in EF Core 2.1 do what you need now?
https://docs.microsoft.com/en-us/ef/core/modeling/value-conversions
Quick Example:
entity.Property(e => e.MyEnumField)
.HasMaxLength(50)
.HasConversion(
v => v.ToString(),
v => (MyEnum)Enum.Parse(typeof(MyEnum),v))
.IsUnicode(false);