c# - EF Core 枚举列表
问题描述
我正在研究在 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) 之类的字符串,然后对其进行解析以接收房间内床的数量和类型。非常感谢您的帮助!
解决方案
这是一个组成对象名称的示例,希望对您有所帮助。
在 OnModelCreating 中:
modelBuilder.Entity<Room>()
.Property(e => e.BedList)
.HasConversion(
v => string.Join(',', v),
v => v.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<Bed>())
.Metadata.SetValueComparer(valueComparer);
您必须在下面为列表创建自己的 valuecomparer 示例:
var valueComparer = new ValueComparer<ICollection<string>>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (ICollection<string>)c.ToHashSet());
推荐阅读
- javascript - 用于 Node.js 的 Tensorflow.js 错误:传递给“切片”的参数“x”必须是张量,但得到了对象
- javascript - 正则表达式匹配任何 1+ 非空格字符
- vb.net - 我可以使用 WCF 方法在 SOAP 标头中添加此自定义 WCF 安全节点吗?
- php - 如何在不下载证书的情况下修复 Curl 错误 60
- python - Pyspark中RDD到DF的不完全转换
- sql-server - 在 SQL Server 中查询“每次支付相应账单后的余额”
- node.js - 在循环中将数据添加到 Cloud Firestore
- sql - SSRS - 针对某一列的值数
- javascript - Ag-Grid - 服务器端行模型 params.failCallback
- arrays - DO 循环更新分配 SAS