Как узнать получить данные наследованного класса в 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
286 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир