如何正确地创建带有每周开放时间属性列表的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; }
}
如果每个条目都是唯一的,那么如果不想引入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设计师