c# - 在 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>();
}
}
就我得到的东西而言,这将在更新条目时将其转换为字符串,但是当我从数据库中检索值时,这会使事情变得更难吗?
解决方案
推荐阅读
- angular - 无法使用 cdk-overlay-container 找到元素
- rdp - 关于登录代理的问题
- google-sheets - 查找哪些用户正在使用相同的 JobID
- c++ - 为什么 C++ ofstream 比 C FILE 快?
- r - R:将字符类型转换为日期类型时出错
- r - R - ggplot2 - 在具有两个 y 轴的图形上执行双 geom_smooth() 时无法看到标准误差范围
- extjs - 放置自定义 CSS 的最佳位置在哪里?
- linux-kernel - Linux 配置“选择者”是什么?
- html - 在仍然响应的同时限制 img 的大小
- html - VB.NET:如何在表单上激活 html 事件