我有一个使用此架构的数据库,是否可以在Employee和Clinic中添加TimeSlots列表?如果是,它的映射配置是什么。
感谢
答案 0 :(得分:2)
不,您必须拥有包含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
作为参数传递:
public IEnumerable<TimeSlot> GetTimeSlots(int id)
{
// ClientEmployees is mapped navigation property
return ClientEmployees.Where(ce => ce.ClientEmployeeId == id)
.Select(ce => ce.TimeSlots);
}