Question: Write code to demonstrate ENUM usage in Entity Framework.
For this exercise, please make sure that your project references at least version 5 of Entity Framework. You can use NuGet to add that to your project.Model
In Entity Framework, an enumeration can have the following underlying types: Byte, Int16, Int32, Int64 , or SByte. I chose 3 different enum types to highlight the differences in database representation for different enum types.public enum DefaultEnum { Red = 1, Blue = 2, Green = 3 } public enum ByteEnum : byte { RedByte, BlueByte, GreenByte } public enum ShortEnum : short { RedShort, BlueShort, GreenShort }
Now, let’s define our Account class that uses these enums.
public class EnumDemoAccount { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string Name { get; set; } // our enum fields public DefaultEnum DefaultEnum { get; set; } public ByteEnum ByteEnum { get; set; } public ShortEnum ShortEnum { get; set; } }
As you can note, I am generating the Identity column as auto-incrementing (bonus).
Context
Our Context definition is pretty standard for this example. All I am telling the system is to create a database with the name I have given (instead of it choosing one based on namespace + class.
public class AccountContext : DbContext { public DbSet<EnumDemoAccount> EnumDemoAccounts { get; set; } public AccountContext() : base("EFDemoDb") {} }
I also like to like to create a context initializer for test projects so that I always have a clean database for each run:
public class DatabaseContextInitializer : DropCreateDatabaseAlways<AccountContext> { protected override void Seed(AccountContext dbContext) { base.Seed(dbContext); } }
Test code
The test code is simple as well. We first set our initialization strategy, create a context, add a few records and see how things look.
static void Main(string[] args) { // initialization Database.SetInitializer<AccountContext> (new DatabaseContextInitializer()); // create a new context AccountContext ac = new AccountContext(); // add a couple of test entries ac.EnumDemoAccounts.Add( new EnumDemoAccount() { Name = "First", DefaultEnum = DefaultEnum.Blue, ByteEnum = ByteEnum.GreenByte, ShortEnum = ShortEnum.RedShort }); ac.EnumDemoAccounts.Add( new EnumDemoAccount() { Name = "Second", DefaultEnum = DefaultEnum.Green, ByteEnum = ByteEnum.RedByte, ShortEnum = ShortEnum.BlueShort }); // save to db ac.SaveChanges(); // display foreach (var account in ac.EnumDemoAccounts) { Console.WriteLine( "Name: {0}\n\tDefaultEnum:{1}\n\tByteEnum:{2} \n\tShortEnum: {3}", account.Name, account.DefaultEnum, account.ByteEnum, account.ShortEnum); } Console.ReadKey(); }
Output
Now let’s review the output we got:
As you can see, the enum values survived the round trip to the database. Wonderful! And they are all strongly typed so we can use them in our regular programming.
Database
Understanding what happened on the database side is equally important. Remember, we created 3 different enum types in our model – int, short and byte. Does the data type of the enum make any difference in the storage scheme? You bet! Let’s see how Entity Framework internally represents these types to the database:
Note that the default enum data type (int) remained as int. Byte was translated as tinyint and Short as smallint. So, if you are using enums, think hard about your use cases and choose the appropriate datatype for your enums.
And finally, to round things up, let’s see what data values are stored in our database:
No surprises here. Auto generated identity column, proper values for our enums. Things look good. Hoping that this post has given you a good starting point about enums in Entity Framework 5.
Great Article..
ReplyDeleteEntity Framework
Online Entity Framework
Training
Entity Framework Training
Online Entity Framework Training from India
Entity Framework Training in Chennai
Thank you very much for this one. And i hope this will be useful for many people.. and i am waiting for your next post keep on updating these kinds of knowledgeable things...Really it was an awesome article...very interesting to read..please sharing like this information.
ReplyDeleteThanks
Cpa offers
Fantastic blog you got here, I enjoyed reading some of your posts. Thank you sharing this free profile creation websites list. picbear
ReplyDeleteCompre documentos en línea, documentos originales y registrados.
ReplyDeleteAcerca de Permisodeespana, algunos dicen que somos los solucionadores de problemas, mientras que otros se refieren a nosotros como vendedores de soluciones. Contamos con cientos de clientes satisfechos a nivel mundial. Hacemos documentos falsos autorizados y aprobados como Permiso de Residencia Español, DNI, Pasaporte Español y Licencia de Conducir Española. Somos los fabricantes y proveedores de primer nivel de estos documentos, reconocidos a nivel mundial.
Comprar permiso de residencia,
permiso de residenciareal y falso en línea,
Compre licencia de conducir en línea,
Compre una licencia de conducir española falsa en línea,
Comprar tarjeta de identificación,
Licencia de conducir real y falsa,
Compre pasaporte real en línea,
Visit Here fpr more information. :- https://permisodeespana.com/licencia-de-conducir-espanola/
Address: 56 Guild Street, London, EC4A 3WU (UK)
Email: contact@permisodeespana.com
WhatsApp: +443455280186
Mua vé máy bay tại Aivivu, tham khảo
ReplyDeletegiá vé máy bay đi Mỹ khứ hồi
thông tin chuyến bay từ mỹ về việt nam
vé máy bay khứ hồi từ đức về việt nam
dịch vụ vé máy bay tại nga
ve may bay tu anh ve viet nam
chuyến bay từ pháp về việt nam hôm nay
khách sạn cách ly ở hà nội
vé máy bay chuyên gia nước ngoài
I certainly appreciate your stuff provided in the blogs.
ReplyDeletelogo design company