在现有SQL表中,nvarchar
列包含枚举信息。
我现在尝试使用枚举类来使用ADO.Net Entity Framework映射此列。但不知何故,这似乎不可能,因为它需要一个整数列。
ADO EF是否不支持映射到char列的枚举,或者如何实现它允许查询时使用linq或lambda语法?
错误:Given element assignment is invalid.
我更习惯于在很容易的情况下休眠。
答案 0 :(得分:1)
您可以在模型中使用私有属性将数据映射到所需的任何属性类型。
// Model
public class Piece
{
// Subclass Piece to add mappings for private properties
public class PieceConfig : EntityTypeConfiguration<Piece>
{
public PieceConfig()
{
Property(b => b.dbtype); // needed for EF to see the private property
}
}
[Column("type", TypeName = "VARCHAR")]
private string dbtype { get; set; }
[NotMapped]
public PIECE type
{
get { return (PIECE)Enum.Parse(typeof(PIECE), dbtype); }
set { dbtype= value.ToString(); }
}
}
然后您只需要将配置添加到OnModelCreating方法
modelBuilder.Configurations.Add(new Piece.PieceConfig());