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/
Example
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; } }
Answer
Starting with Entity Framework Core 2.1, EF supports Value Conversions to specifically address scenarios where a property needs to be mapped to a different type for storage.
Specifically for Enums, you can use the provided EnumToStringConverter
or EnumToNumberConverter
.