She*_*tin 20 .net c# database orm entity-framework
有没有办法将字符串列映射到实体模型中的枚举?
我在Hibernate中做过这个,但无法在EMF中弄明白.
Cru*_*lex 21
可能是一个更好的版本.
OrderStateIdentifier字段用于JSON序列化和数据库字段,而OrderState仅在代码中用于方便.
public string OrderStateIdentifier
{
get { return OrderState.ToString(); }
set { OrderState = value.ToEnum<OrderState>(); }
}
[NotMapped]
[JsonIgnore]
public OrderState OrderState { get; set; }
public static class EnumHelper
{
/// <summary>
/// Converts string to enum value (opposite to Enum.ToString()).
/// </summary>
/// <typeparam name="T">Type of the enum to convert the string into.</typeparam>
/// <param name="s">string to convert to enum value.</param>
public static T ToEnum<T>(this string s) where T: struct
{
T newValue;
return Enum.TryParse(s, out newValue) ? newValue : default(T);
}
}
Run Code Online (Sandbox Code Playgroud)
kro*_*ijk 13
它很难看,但是为了将枚举映射到字符串,我发现了这样的东西:
public virtual string StatusString
{
get { return Status.ToString(); }
set { OrderStatus newValue;
if (Enum.TryParse(value, out newValue))
{ Status = newValue; }
}
}
public virtual OrderStatus Status { get; set; }
Run Code Online (Sandbox Code Playgroud)
OrderStatus是枚举器类型,Status是枚举器,StatusString是它的字符串版本.
您可以执行以下任一操作:
将类中的 Enum 属性装饰为文本列
[Column(TypeName = "nvarchar(50)")]
public FileTypes FileType { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者
在您的DatabaseContext课程中,覆盖OnModelCreating并添加:
modelBuilder
.Entity<File>()
.Property(e => e.FileType)
.HasConversion(new EnumToStringConverter<FileTypes>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19954 次 |
| 最近记录: |