0

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

在此处输入图像描述

谢谢

4

1 回答 1

2

不,您必须拥有ClientEmployee包含TimeSlots导航属性的实体。如果您想拥有TimeSlots实体EmployeeClinic则只能通过将访问相关的非映射属性来实现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);
}
于 2012-07-16T08:46:43.063 回答