EF Core — лучший способ сопоставления с общей таблицей поиска

#c# #.net #entity-framework-core

Вопрос:

В моей существующей базе данных у меня есть таблица для хранения значений поиска / списка выбора — она многоцелевая, поэтому позволяет мне хранить значения, которые могут использоваться для управления несколькими полями со списком и т. Д. — Дело в том, что я не уверен, как это смоделировать в EF?

Схема таблицы выглядит следующим образом :

PKID int

Тип значения varchar(32)

ValueKey int

Значение varchar(64)

Отображает последовательность int

Таким образом, каждый тип значений обозначает группу значений. В идеале мне нужно захватить значения из этой таблицы, когда я отображаю данные, как в моих таблицах, я просто, например, сохраню значение PriorityID, которое сопоставляется с набором значений в моей таблице раскрывающихся списков. Где у меня есть отдельные сущности для вещей, которые я с удовольствием могу использовать .Включите и т. Д., Но для этого сценария я не вижу, как этого можно достичь.

Существует ли какой-либо способ определить подмножество записей как отдельную сущность, чтобы у меня были Приоритеты / категории и т. Д., И он мог выбирать только подмножество записей, или мне придется просто вручную создавать свои запросы и фильтровать записи, когда я присоединюсь к этой таблице раскрывающихся списков?

Спасибо

Изменить : Я прошел маршрут TPH :

 public class PickList
{
    [Key]
    public int PKID { get; set; }
    [Column("PLValueType")]
    public string ValueType { get; set; }
    [Column("PLValueKey")]
    public int ValueKey { get; set; }
    [Column("PLValueTitle")]
    public string ValueTitle { get; set; }
    [Column("PLDisplaySequence")]
    public int DisplaySequence { get; set; }
}
 

Затем :

 public class Priority : PickList
{
}
 

И :

   modelBuilder.Entity<PickList>()
      .HasDiscriminator<string>("ValueType")
      .HasValue<Priority>("Priority");
 

Однако как мне связать мою приоритетную сущность с моей рабочей сущностью на основе PriorityFlag?

 public class WorkItem
{
    [Key]
    public int WorkItemID { get; set; }
    public string WorkDescription { get; set; }
    public DateTime RequiredDateTime { get; set; }
    public int PriorityFlag { get; set; }
    public int PriorityIndex { get; set; }
    public string AssignedTo { get; set; }
    public DateTime? CompletionDateTime { get; set; }        
}
 

Комментарии:

1. Вероятно, наследование TPH, где ValueType находится дискриминатор.

2. не могли бы вы опубликовать полный дизайн таблиц и как вы планируете использовать поисковые запросы из этих таблиц?

3. Не уверен, что еще я могу добавить на самом деле — в этой таблице содержится множество записей с уникальными значениями в поле ValueKey для каждого набора значений в ValueType — это просто общая таблица поиска, ничего особенного.

4. @GertArnold — поиск опции TPH кажется хорошим способом сделать это, но как мне переименовать / сопоставить мои столбцы в унаследованном классе, чтобы они затем присоединились к моим основным таблицам?

5. Так как ответов пока нет, пожалуйста, обновите свой вопрос тем, что у вас есть до сих пор, тогда мы, вероятно, поймем, что вы имеете в виду.