0

我正在使用实体框架并且有问题。

当我获取数据时,我不使用模型类的返回类型。所以创建了一个类和实体框架的人返回我的类的类型如下:

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() 方法?

4

1 回答 1

2

您可以使用从数据库中的表中选择您拥有的属性的投影:MixedArticleArticles

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表达式中手动列出和分配所有这些属性。

于 2013-09-04T19:13:24.827 回答