|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
||||||||||||||||||||||||||
Наследование в Entity Framework Code First17.03.2015, 16:25. Показов 4059. Ответов 17
Метки нет (Все метки)
Здравствуйте. Разбираюсь с EF:CF, прочитал уже довольно много материала, но все же столкнулся с проблемой.
Суть в том, что у меня есть базовый класс:
Может это не фреймворк проблемный, а я?
0
|
||||||||||||||||||||||||||
| 17.03.2015, 16:25 | |
|
Ответы с готовыми решениями:
17
Entity Framework code first Entity Framework( Code First) Firebird and entity framework code first |
|
|
||
| 17.03.2015, 17:24 | ||
|
Чтобы получить свойства, определенные в классе-наследнике, используйте явное приведение типов.
0
|
||
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
|
| 17.03.2015, 17:37 [ТС] | |
|
insite2012, уже делал так, но слишком много лишнего кода, существует возможность получить сразу все свойства?
0
|
|
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
||
| 17.03.2015, 17:46 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
|
| 17.03.2015, 17:56 [ТС] | |
|
kodv, это через Activator.CreateInstance()?
0
|
|
|
|
|||
| 17.03.2015, 18:08 | |||
|
Либо использовать явное приведение типов (кода там не много, один оператор), либо использовать сразу нужный тип. Иначе никак. Максимум, что вы можете - определить оператор неявного преобразования, но это вряд ли что-то даст...
0
|
|||
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
|
| 17.03.2015, 18:13 [ТС] | |
|
insite2012, проблема в том, что у меня несколько дочерних классов и явно привести тип я не могу (наверное). Конечно, можно по GetType() switch-case построить, но мне кажется это ну.. не знаю.. неправильно что ли?
0
|
|
|
|
||
| 17.03.2015, 18:16 | ||
|
1
|
||
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
|
| 17.03.2015, 18:21 [ТС] | |
|
insite2012, а чем это чревато?
0
|
|
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|||
| 17.03.2015, 18:32 | |||
|
1
|
|||
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
||||||
| 17.03.2015, 18:52 [ТС] | ||||||
|
kodv,
Мне нужно чтобы в таблице AdSchedule был внешний ключ на Advertise либо на его потомков, и я думал, что наследование поможет мне в этом
0
|
||||||
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
|
| 17.03.2015, 18:59 [ТС] | |
|
Вот, что я имею в данный момент. А свойство дочернего класса находится в кирпичике выше. Если я приведу явно, то получу только его, а хотелось бы все вместе
0
|
|
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
| 17.03.2015, 19:06 | |
|
OverBack, то есть, вы не можете произвести явное приведение к типу FullscreenAdvertise, потому что объект может быть другого типа, но вы желаете использовать свойство FullscreenAdvertise.Source, так как все объекты будут типа FullscreenAdvertise? Противоречие не улавливаете?
Добавлено через 3 минуты OverBack, вы не понимаете ни принципа наследования, ни принципа полиморфизма. Если перечитать и разобраться, то вопросов станет намного меньше. В объекте класса FullscreenAdvertise будут видны все свойства.
1
|
|
|
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 45
|
|
| 17.03.2015, 19:08 [ТС] | |
|
kodv, извините, что-то видимо я натупил. Второй день сижу. И кажется, я понял в чем проблема, поправьте меня, пожалуйста, если я ошибаюсь:
По ID я вытягиваю запись из таблицы где может быть родитель или кто-то из детей, определяю тип и в зависимости от типа выстраиваю логику разбора этих данных, да? То есть банальный свитч? Почему-то мне казалось, что можно сделать как-то проще, а SwCa плохой выбор..
0
|
|
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
| 17.03.2015, 19:22 | |
Сообщение было отмечено OverBack как решение
Решение
OverBack, да, вы все правильно поняли. Хотя в идеале нужно стараться выстраивать логику приложения так, чтобы избегать подобных свичей. Вот появится у вас еще один наследник, и вам придется во все 100500 мест, где встречается подобный свич, добавить еще одну ветвь кода. А это не есть хорошо.
1
|
|
|
|
||
| 17.03.2015, 20:22 | ||
|
0
|
||
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
| 17.03.2015, 20:35 | |
|
insite2012, я, если честно, толком в задачу ТС не вникал. Поэтому у меня нет ни правильного ответа, ни своего мнение по поводу того, как это должно выглядеть для данной задачи. Направление явно верное. В вашем мастерстве программирования я никогда не сомневался :-)
0
|
|
|
|
|
| 17.03.2015, 20:38 | |
|
kodv, я примерно такой пример использовал (только не с типами, а с байтами), когда мне по принятому байту необходимо было определить тип устройства. Сначала тоже со switch морочился, а когда типов стало много (в процессе развития программы), сделал один общий словарь (static, в файле Program.cs), и использовал его. И если раньше приходилось во многих местах, где необходимо проверить тип перебирать через switch, то потом стало проще - поиск в словаре по ключу и все.
0
|
|
| 17.03.2015, 20:38 | |
|
Помогаю со студенческими работами здесь
18
Первые шаги в Code first entity framework Entity Framework Code First Каскадное удаление Entity Framework (Code First) использование кириллицы в классе ADO.Net Entity Framework неправильное наследование
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|