Вопрос

Я думаю о том, как это сделать, но у меня есть несколько различных форм данных в моей базе данных, Статьи, новостные разделы и т.д.

У всех них есть что-то общее, у всех у них есть идентификаторы (в базе данных они называются articleId, NewSID и т.д.)

У всех них есть Название

У всех них есть Основной текст.

У всех них есть Статус

У всех них есть Добавлена дата

То, что я хотел бы сделать, - это стандартное наследование класса.

Я бы хотел, чтобы мастер-класс (мне не нужно записывать это в базу данных) назывался Содержание с такими полями , как:

  • ID
  • Название
  • Подзаголовок
  • Основной текст
  • Статус
  • Добавленная дата

Я не уверен, как я могу сделать это с помощью ORM.Почему я хочу этого, потому что тогда я могу передать список содержимого моему UserControl, который отвечает за его рендеринг.Ему понадобится только та информация, которая является общей для всех объектов.

Возможно ли это вообще?

Это было полезно?

Решение

Именно для этого и существуют интерфейсы.Пусть каждый класс реализует интерфейс IContent, который содержит ваши свойства Title, bodyText, Status и dateAdded.Теперь вы можете передавать коллекцию по кругу ( List<IContent> ) вокруг, которые могли бы содержать различные типы контента.

Если вы используете LinqToSql, вы можете создавать файлы частичных классов, чтобы автоматически созданные классы реализовывали нужный вам интерфейс.

public partial class SomeContent : IContent

Другие советы

Я не уверен, говорите ли вы о LINQ to SQL, но в Интернете есть несколько ресурсов о том, как создать наследование с его помощью:

  1. Пример столбца LINQ To SQL Discriminator - Руководство по сопоставлению наследования
  2. Наследование в LINQ для скринкаста SQL

... и многое другое.

HTH

Я нашел одну страницу, которая выглядит так, как будто на ней есть что-то похожее на то, что я ищу (последнее сообщение)...но я не уверен насчет использования слабо типизированных объектов:

Наследование LINQ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top