Объекты данных LinQ ORM и наследование
-
05-07-2019 - |
Вопрос
Я думаю о том, как это сделать, но у меня есть несколько различных форм данных в моей базе данных, Статьи, новостные разделы и т.д.
У всех них есть что-то общее, у всех у них есть идентификаторы (в базе данных они называются articleId, NewSID и т.д.)
У всех них есть Название
У всех них есть Основной текст.
У всех них есть Статус
У всех них есть Добавлена дата
То, что я хотел бы сделать, - это стандартное наследование класса.
Я бы хотел, чтобы мастер-класс (мне не нужно записывать это в базу данных) назывался Содержание с такими полями , как:
- ID
- Название
- Подзаголовок
- Основной текст
- Статус
- Добавленная дата
Я не уверен, как я могу сделать это с помощью ORM.Почему я хочу этого, потому что тогда я могу передать список содержимого моему UserControl, который отвечает за его рендеринг.Ему понадобится только та информация, которая является общей для всех объектов.
Возможно ли это вообще?
Решение
Именно для этого и существуют интерфейсы.Пусть каждый класс реализует интерфейс IContent, который содержит ваши свойства Title, bodyText, Status и dateAdded.Теперь вы можете передавать коллекцию по кругу ( List<IContent>
) вокруг, которые могли бы содержать различные типы контента.
Если вы используете LinqToSql, вы можете создавать файлы частичных классов, чтобы автоматически созданные классы реализовывали нужный вам интерфейс.
public partial class SomeContent : IContent
Другие советы
Я не уверен, говорите ли вы о LINQ to SQL, но в Интернете есть несколько ресурсов о том, как создать наследование с его помощью:
- Пример столбца LINQ To SQL Discriminator - Руководство по сопоставлению наследования
- Наследование в LINQ для скринкаста SQL
... и многое другое.
HTH
Я нашел одну страницу, которая выглядит так, как будто на ней есть что-то похожее на то, что я ищу (последнее сообщение)...но я не уверен насчет использования слабо типизированных объектов: