Entity Framework Метод ToList TSource

Я использую сущность framewok и у кого есть проблема.

когда я получаю данные, я не использую возвращаемый тип для модели class.so, который создал класс, и структура сущностей возвращает тип моего класса, как показано ниже:

List<MixedArticle> lstMxa=new List<MixedArticle>();

 Model.BlogDBEntities bdbe = new Model.BlogDBEntities();
                SqlParameter sp = new SqlParameter("@count", count);
                object[] parameters = new object[1] { sp };

                lstMxa = bdbe.Database.SqlQuery<Facade.MixedArticle>("select * from fn_GetLastXArticles(@count)", parameters).ToList();

но я могу использовать метод ToList как

lstMxa=bdbe.Articles...where(x=x.Count==count).ToList<Facade.MixedArticle>();

когда я попробовал этот способ, то Visual Studio отвергает и говорит, что это не TSource.

Итак, как я могу использовать метод ToList()?

1 ответ

Решение

Вы можете использовать проекцию, которая выбирает свойства, которые вы имеете в MixedArticle от Articles Таблица в базе данных:

lstMxa = bdbe.Articles
    .Where(x => x.Count == count)
    .Select(x => new Facade.MixedArticle
    {
        SomePropertyInMixedArticle1 = x.SomeProperty1,
        SomePropertyInMixedArticle2 = x.SomeProperty2,
        // etc.
    })
    .ToList();

Вы также можете загрузить полный Article сущность из базы данных, а затем сопоставить необходимые свойства с MixedArticle (например, используя такой инструмент, как AutoMapper). Но выгода проекции с Select является то, что он не загружает больше значений столбца из базы данных, чем вам нужно MixedArticle - но за счет того, что вы должны перечислить и назначить все эти свойства вручную в Select выражение.

Другие вопросы по тегам