0

我有 2 个抽象类:配置和房间。两者都有 2 个用于 Coworking 和 Meeting 的具体实现(CoworkingRoomConfiguration、MeetingRoomConfiguration、MeetingRoom 和 CoworkingRoom)。

两者都配置为具有使用 Fluent API 的鉴别器列:

房间:

builder.ToTable(nameof(Room));
builder.HasKey(x => x.Id);
builder.HasDiscriminator<string>("Type")
    .HasValue<MeetingRoom>("Meeting")
    .HasValue<CoworkingRoom>("Coworking");

配置:

builder.ToTable(nameof(Configuration));
builder.HasKey(x => x.Id);
builder.HasDiscriminator<string>("Room_type")
    .HasValue<MeetingRoomConfiguration>("Meeting")
    .HasValue<CoworkingRoomConfiguration>("Cowork");

在我的域中,一个 CoworkingRoom 有一个 CoworkingRoomConfiguration。不过,MeetingRoom 有许多 MeetingRoomConfigurations。是否可以使用 Fluent API 显式声明这些关系,同时将类型配置为 TPH?

现在我依靠 EF Core 来推断基于属性类型的关系,但这不是我想要依赖的东西。

类如下,Entity类型基于本文

房间等级:

public abstract class Room : Entity
{
    // Omitted for brevity
}

public class MeetingRoom : Room
{
    public ICollection<MeetingRoomConfiguration> Configurations { get; }
    // Rest omitted for brevity
}

public class CoworkingRoom : Room
{
    public CoworkingRoomConfiguration Configuration { get; set; }
    // Rest omitted for brevity
}

配置类:

public abstract class Configuration : Entity
{
    // Omitted for brevity
}

public class CoworkingRoomConfiguration : Configuration
{
    // Omitted for brevity
}

public class MeetingRoomConfiguration : Configuration
{
    // I'd like to get rid of the circular reference here too if possible
    public IEnumerable<MeetingRoom> MeetingRooms { get; set; }
    // Rest omitted for brevity
}
4

0 回答 0