我有一个具有此架构的数据库,是否可以在 Employee 和 Clinic 中添加 TimeSlots 列表?如果是,其映射的配置是什么。

谢谢
我有一个具有此架构的数据库,是否可以在 Employee 和 Clinic 中添加 TimeSlots 列表?如果是,其映射的配置是什么。

谢谢
不,您必须拥有ClientEmployee包含TimeSlots导航属性的实体。如果您想拥有TimeSlots实体Employee,Clinic则只能通过将访问相关的非映射属性来实现ClientEmployee:
// This is from Employee or Clinic class
[NotMapped]
public IEnumerable<TimeSlot> TimeSlots
{
get
{
// ClientEmployees is mapped navigation property
return ClientEmployees.SelectMany(ce => ce.TimeSlots);
}
}
你看到问题了吗?Employee并且Clinic可以有多个相关ClientEmployees的,每个ClientEmployee可以有多个 TimeSlots - 此属性将为您提供所有相关的所有时间段ClientEmployees- 如果您只想要一个,您需要一个方法并传递ClientEmployeeIdas 参数:
public IEnumerable<TimeSlot> GetTimeSlots(int id)
{
// ClientEmployees is mapped navigation property
return ClientEmployees.Where(ce => ce.ClientEmployeeId == id)
.Select(ce => ce.TimeSlots);
}