如何正确地创建带有每周开放时间属性列表的c#类

本文关键字:属性 时间 列表 正确地 创建 每周 | 更新日期: 2023-09-27 18:16:51

我觉得这对你们中的许多人来说是非常明显的,但是我的研究没有给我带来任何结果。我试图建立一个类,将创建对象的属性列表像这样:

public class MyObject
    {
        [Key]
        public int Id { get; set; }
        public string Title { get; set; }
        public List<OpenHours> OpenHours { get; set; }
        public Filter Filters { get; set; }
    }

我希望OpenHours对象存储每日小时列表,以便通过执行MyObject.OpenHours[index].property.

我目前得到的错误是OpenHours对象没有定义的键,但我实际上不希望它在我的数据库中作为一个不同的实体,我只是希望它以相同的方式存储属性,如果我在MyObject类中直接列出每个weekDay的属性。

下面是OpenHours类:

public class OpenHours
{
    public DayOfWeek Day { get; set; }
    public string StartTime { get; set; }
    public string EndTime { get; set; }
}

我希望我的每个"MyObject"对象都有唯一的OpenHours值,所以我不想为它创建一个Id。是我在语法中遗漏了什么,还是这样做是错误的逻辑?

提前感谢您的回答!

编辑:有人回答并删除了他的答案之后,所以我不能把它标记为正确的答案,但解决方案是添加[ComplexType]到我的类:

[ComplexType]
public class OpenHours
{
    public DayOfWeek Day { get; set; }
    public string StartTime { get; set; }
    public string EndTime { get; set; }
}

如何正确地创建带有每周开放时间属性列表的c#类

如果每个条目都是唯一的,那么如果不想引入id,则使用复合主键。将所有属性设置为主键。在数据库方面,这将比仅仅创建一个Id作为主键更低效。

有人回答并删除了他的答案,所以我不能将其标记为正确答案,但解决方案是将[ComplexType]添加到我的类:

[ComplexType]
public class OpenHours
{
    public DayOfWeek Day { get; set; }
    public string StartTime { get; set; }
    public string EndTime { get; set; }
}

有关复杂类型的其他信息的链接:

  • EF代码的关联:第2部分-复杂类型
  • 实体框架复杂类型- EF设计师