首页 > 解决方案 > 在 EF Core 代码优先方法中正确映射枚举

问题描述

我有一个图书馆应用程序,并且正在尝试采用代码优先的方法,该方法具有这样的 Book 实体:

public class Book
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Title { get; set; }
    public string Publisher { get; set; }
    public Category? Category { get; set; }
}

public enum Category : byte
{
    [Description("LA_Category_Thriller")]
    Thriller,
    [Description("LA_Category_Adventure")]
    Adventure,
    [Description("LA_Category_Comic")]
    Comic,
    [Description("LA_Category_Mistery")]
    Mistery
}

现在我正在编写一个 BookConfiguration 类,但我不确定我做的是否正确;我不确定最好的解决方案是什么,将其转换为字符串,或者也将其输入到数据库中,如 SQL-enum (不确定在 EF Core 中是否可能):

public class BookConfiguration : IEntityTypeConfiguration<Book>
{
    public void Configure(EntityTypeBuilder<Book> builder)
    {
        builder.ToTable(nameof(Book), "lib");

        builder.HasKey(b => b.Id);
        builder.Property(b => b.Id).ValueGeneratedOnAdd();

        builder.Property(b => b.Category)
            .HasMaxLength(32)
            .HasConversion<string>();

    }
}

就我得到的东西而言,这将在更新条目时将其转换为字符串,但是当我从数据库中检索值时,这会使事情变得更难吗?

标签: c#modelentity-framework-core

解决方案


推荐阅读