Предположим, у меня есть две таблицы Встречи и Участники.Моя база данных выглядит следующим образом.
// Table Meeting
Id
Description
// other properties ...
// Attendee
Id
Name
MeetingId
// other properties ...
У меня есть два представления, которые сопоставлены с этими таблицами.Одним из них является ViewMeetings только с данными собрания, другие ViewMeetingAttendees объединены с участниками.
Я хочу использовать таблицу для каждого типа (TPT), отображая каждую таблицу в представление.
public abstract class MeetingBase
{
// Some properties here
}
public class ViewMeeting : MeetingBase
{
}
public class ViewMeetingAttendee : MeetingBase
{
public String AttendeeName { get;set; }
}
// Configuration
moduleBuilder.Entity<ViewMeeting>().ToTable("ViewMeetings");
moduleBuilder.Entity<ViewMeetingAttendee>().ToTable("ViewMeetingAttendees");
// NOTE fixed the ViewMeeting error as stated in HansVG answer below.
Каждый разЯ пытаюсь запустить этот код, я получаю сообщение об ошибке Неверное имя столбца «Дискриминатор»
Я понимаю, что структура сущностей пытается разрешить типы в виде таблицы на иерархию (TPH).Тем не менее, я все еще хочу отобразить свойства, используя наследование без предполагаемого TPH.Это разумно, поскольку все столбцы одинаковы, кроме одного.У меня есть десять других столбцов и два представления.Кроме того, у меня есть один объект собрания, которому для большинства операций CRUD нужны одни и те же столбцы.
Есть ли способ сохранить наследование, но потерять ошибку дискриминатора?[NotMapped] не вариант, так как я все еще извлекаю данные из базы данных.Кроме того, я не предпочитаю объединять таблицы локально, используя LINQ, поскольку есть объединенные сущности, которые не должны отображаться иначе.