【发布时间】:2020-12-16 17:57:39
【问题描述】:
我正在开发一个在 Entity Framework Core 中组织酒店预订的小型应用程序。我需要添加有关每个房间的床位数量和类型的信息。我在想,我决定枚举列表会比将它存储在单独的表中更好。但我不知道如何实现它
public enum Bed
{
Single = 1,
Double = 2,
}
public class Room : IEntity
{
[Key]
public int Id { get; set; }
public string RoomIdentifier { get; set; }
public ICollection<Bed> Beds { get; set; }
public int Floor { get; set; }
public double Price { get; set; }
public bool IsFree { get; set; }
public bool IsOutOfService { get; set; }
public bool ShouldBeCleaned { get; set; }
public ICollection<RoomReservation> RoomReservations { get; set; }
}
有可能吗?我还想将其保存为 (1,2,1,2) 之类的字符串,然后对其进行解析以接收房间内床的数量和类型。非常感谢您的帮助!
【问题讨论】:
-
默认情况下,枚举列表将存储在单独的表中。所以一串 Id 被解析回列表将是一个自定义序列化程序
-
枚举作为整数存储在数据库中。值转换器用于在枚举类型与其等效数字之间进行转换。见docs.microsoft.com/en-us/ef/core/modeling/value-conversions
-
@RobertHarvey 如果我有一个枚举值就足够了,但就我而言,我有一个每个房间对象的枚举列表,我不知道这是否可行。
-
我看不出枚举列表与任何其他对象的列表有何不同。
-
通过不使用单独的表,您只会遇到问题 - 非标准更改检测,无法对此类“列”执行服务器端查询条件等。以逗号分隔的字符串存储值并不比存储日期更好/数字字符串而不是本机数据类型。现在数据库表(尤其是当通过 ORM 代码迁移管理时)是免费的(基本上没有成本),只需使用它们,不要浪费你的时间。我很确定几天后您将发送的下一个问题将是“如何使用 LINQ 和 EF Core 查找具有特定床位数和类型的房间”,但没有好的答案
标签: c# .net-core entity-framework-core blazor