我有一个具有此架构的数据库,是否可以在 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
- 如果您只想要一个,您需要一个方法并传递ClientEmployeeId
as 参数:
public IEnumerable<TimeSlot> GetTimeSlots(int id)
{
// ClientEmployees is mapped navigation property
return ClientEmployees.Where(ce => ce.ClientEmployeeId == id)
.Select(ce => ce.TimeSlots);
}