Как узнать получить данные наследованного класса в EF 6? Добрый день всем!
Как в EF получить наследованные объекты?
Например: class Phone
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
class IPhone : Phone
{
public string Manufacturer { get; set; }
}
Сохранение в БД: public void Create()
{
var phone = new Phone();
var iphone = new Phone();
Phones.Add(phone);
Phones.Add(iphone);
}
Если сделать обычный запрос т.е. без указания типа то ef возвращает все данные в виде Phone. Как можно получить все данные в том виде каком они есть. Например если данные сохранены в виде IPhone тогда IPhone а если Samsung то в виде Samsung.

21 Авг 2019 в 07:03
243 +1
0
Ответы
1

Для того чтобы получить данные наследованного класса в Entity Framework 6, можно использовать методы LINQ, такие как OfType() или Cast().

Пример:

var phones = context.Phones.OfType<IPhone>().ToList();

Вышеуказанный код выберет только объекты типа IPhone из коллекции Phones и вернет их в виде списка.

Если вы хотите получить все объекты в виде их наследников, то можно использовать метод Cast():

var allPhones = context.Phones.Cast<Phone>().ToList();

Этот код вернет все объекты из коллекции Phones в виде их базового класса Phone, но они всё равно будут сохранены в виде своих конкретных наследников (например, IPhone).

Надеюсь, это поможет вам получить данные в нужном формате.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир