ADO.Net - сопоставление столбца char таблицы с перечислением

В существующей таблице SQL столбец nvarchar содержит перечислительную информацию.

Теперь я пытаюсь использовать класс перечисления для сопоставления этого столбца с помощью ADO.Net Entity Framework. Но почему-то это кажется невозможным, поскольку для этого требуется целочисленный столбец.

ADO EF не поддерживает перечисления, сопоставленные столбцам char, или как реализовать синтаксис linq или lambda при запросах?

Ошибка: Given element assignment is invalid.

Я больше привык переводить orm в спящий режим там, где это легко возможно.


person djmj    schedule 07.03.2014    source источник


Ответы (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());
person dss    schedule 13.08.2014