Reputation: 103497
Say my database tables have columns like UserType
, SalesType
, etc.
Should I have database tables with UserTypeID
, userTypeName
or should I just create a C# enumeration?
Upvotes: 14
Views: 4143
Reputation: 103495
If the list is stable enough to use an enum, then I would use an enum in your code plus a table in the database (make it a foreign key for data consistency).
Upvotes: 0
Reputation: 37205
In my projects, I use my application dbscript to generate C# consts from database, so code always matches db values.
Of course, you only need to have C# enums if your code does something specific depending on the value of the Type field.
Upvotes: 0
Reputation: 49261
It depends. I listed a few pros and cons for each approach below. In general, I strongly prefer enums if the application needs to use a value to make decisions. As Mehdrad mentioned, you can use both approaches but it requires extra effort to keep the lists in sync.
Lookup tables:
Enum:
Upvotes: 8
Reputation: 421988
What's wrong with both? If value's are user-defined or changing, definitely enum
will not be suitable.
If values are strictly non-changing (such as gender), you can have them as enums
for ease of reference in the application and also in the DB as separate table to enforce foreign keys and as a reference.
Upvotes: 13