最初にEntity Frameworkコードで列挙型を操作する方法を教えてください。クラスの「Annonce」でこのプロパティを使用できるようにしたい
public Status EtatAnnonce { get; set; }
ステータスは次のように定義されます
public enum Status
{
Pending,
Approved
}
最初にEntity Frameworkコードで列挙型を操作する方法を教えてください。クラスの「Annonce」でこのプロパティを使用できるようにしたい
public Status EtatAnnonce { get; set; }
ステータスは次のように定義されます
public enum Status
{
Pending,
Approved
}
値を int としてデータベースに格納するには、コンバーター フィールドを作成する必要があります。
public int MyEnumValueInt {get;set;}
[NotMapped]
public MyEnum MyEnumValue
{
get{ return (MyEnum)MyEnumValueInt;
set{ MyEnumValueInt = (int)value;
}
注: 列挙型のサポートは EF 5 で改善されます。
向けてくれます
最初に Entity Framework コードでの列挙型サポートの概要を説明するには:
EF4: サポートされていません
EF5: .net Framework 4.5 以降をターゲットにしている場合にのみサポートされます
EF6: .net 4.0 以降を対象とする場合にのみサポートされます
乾杯!
モデルでプライベート プロパティを使用して、データを任意のプロパティ タイプにマップできます。
// 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());