#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. Так как ответов пока нет, пожалуйста, обновите свой вопрос тем, что у вас есть до сих пор, тогда мы, вероятно, поймем, что вы имеете в виду.