我正在使用实体framewok并且有问题。
当我获取数据时,我不使用返回类型一个模型类。所以创建了一个类和实体框架的人返回我的类的类型,如下所示:
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>();
当我尝试这种方式时,视觉工作室拒绝并说它不是TSource。
那么,我如何使用ToList()方法?
答案 0 :(得分:2)
您可以使用投影从数据库中的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
表达式中。