Unfortunately, enums
are not natively supported on EF 4.1. Here's one rather known article on how to deal with them: Faking enums on EF 4. It does, however, require a wrapper.
There's a simpler way to map enums in EF 4 however: just create an int property on your class to represent the int value of the enum. That's the property that EF should map, then have a "mini wrapper" property to allow you to use the enum.
public class Appointment
{
public int ID { get; set; }
public string Description { get; set; }
// This property will be mapped
public int DayOfWeekValue { get; set; }
public DayOfWeek Day
{
get { return (DayOfWeek) DayOfWeekValue; }
set { DayOfWeekValue = (int) value; }
}
}
public enum DayOfWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
On generating the database, EF will happily ignore any type it doesn't know how to map, but the int property will be mapped.
Note: This is taken directly from my answer to another enum
and EF
question: EF 4.1 Code First - map enum wrapper as complex type
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…