Entity Framework Enum Code First Lookup Table
In this tutorial you will learn how to create lookup tables using enums in entity framework (EF) with Code-first approach.
With EF support for enums, you can include lookup tables in the code in form of enums and also have them in the database for integrity.
Contents
This tutorial provides the information you need about:
- What Is Enum In C# ?
- Creating Enum
- Creating Lookup Table Class Using Code-First Approch
- Define Foreign Key Constraint Using Code-First Conventions
- Disable Identity for Lookup Table IDs
- Seeding Enum into Lookup Table
- References
What Is Enum In C# ?
Enum or Enumerations is used to declare a list of named integer constants. The enum is used to give a name to each constant so that the constant integer can be referred using its name.
Enumerations appear in your source code. These are things that affect program logic because you’re going to have conditional statements based on the state of some entity comparing it with some enum value. This enums represents numerical values which can get used in place of IDs in database tables.
Creating Enum
C# usually manages the IDs of enumeration for you.
As you version your code from one version to the next you want to make sure that those IDs remain consistent. To keep it consistent we assing values to each enum. Below is the code for StatusEnum we will be working on.
Creating Lookup Table Class Using Code-First Approch
We will create another class named Status to represent our above enum as lookup table. Status class will act as a lookup table for our above StatusEnum. Here we use StatusEnum as datatype for our IDs to constrain the Status ID to just those values in the StatusEnum.
Define Foreign Key Constraint Using Code-First Conventions
Below is the Employee class that represent our Employee Table. Below code will create the Foreign Key relationship inside a Employee, and constrain the Status ID to just those values in the StatusEnum.
Disable Identity for Lookup Table IDs
When you’re backing enum with the database you want to control those IDs. We can disable the identity on our lookup Status table by confuguring the modelBuilder. By disabling the identity we will have control over the IDs we want to poplulate, which will be the enum values in our case.
Seeding Enum into Lookup Table
In order to insert the enumeration values into the database we’re going to take advantage of the seed method. This is a method on the configuration class that was created whenever we enabled migrations for the first time. Let’s jump to the code, and see how we can create seed data for an enumeration.
By using the above method for seeding we can eliminate mistakes and error occur in populating enums in our lookup table.
References
Subscribe to Code with Shadman
Get the latest posts delivered right to your inbox