Hes*_*esh 8 c# entity-framework-core .net-core blazor
我正在开发小型应用程序,在 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; }
}
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?我还想将其保存为像 (1,2,1,2) 这样的字符串,然后解析它以接收房间中床的数量和类型。非常感谢您的帮助!
这是一个由对象名称组成的示例,希望对您有所帮助。
在模型创建中:
modelBuilder.Entity<Room>()
.Property(e => e.BedList)
.HasConversion(
v => string.Join(',', v),
v => v.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<Bed>())
.Metadata.SetValueComparer(valueComparer);
Run Code Online (Sandbox Code Playgroud)
您必须在下面创建自己的值比较器示例以获得列表:
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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6859 次 |
| 最近记录: |