У меня есть 4 подкласса: Video
, Image
, Note
и Form
. Каждый из них содержит разные типы данных. Например, класс Image
содержит путь к файлу образа в свойствах диска и изображения, а класс Form
содержит значения поля формы. Однако общим элементом между каждым элементом являются GPS-координаты и заголовок, поэтому у меня есть следующий абстрактный базовый класс:
public abstract class Content
{
public float? Latitude { get; set; }
public float? Longitude { get; set; }
public float? Heading { get; set; }
}
Однако я не могу понять, как это смоделировать в базе данных. В настоящее время у меня есть таблица с именем Events
(для примера, скажем, событие является днем рождения) и 4 таблицы (Videos
, Images
, Notes
и Forms
). У каждой таблицы есть внешний ключ, ссылающийся на первичный ключ Events
.
Используя LINQ-to-SQL, я получаю 5 классов для каждой таблицы. Это хорошо, если мне нужен только один тип данных, например Event.Images
, но я хочу подсчитать общее количество «содержимого», которое есть у Event
, и получить координаты GPS. Я могу достаточно легко подсчитать счет, используя Event.Images.Count() + Event.Videos.Count() + ...
, но я не могу сделать то же самое для координат GPS. Есть ли способ, которым я могу смоделировать базу данных так, чтобы я мог использовать базовый класс для каждого элемента и при этом иметь возможность получать отдельный строго типизированный элемент, когда мне нужно увидеть его данные?