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
выражение.