实体框架 6:让简单的东西发挥作用

本文关键字:作用 简单 框架 实体 | 更新日期: 2023-09-27 18:33:41

>我有一个 C#.NET (4.5.2( 项目,我正在尝试使用实体框架 (6.0( 来管理数据库中的数据模型。 毕竟,这就是 EF 的用途。

我遵循了这里的例子:https://msdn.microsoft.com/en-us/data/ef.aspx

但它们都适用于 EF 4.1,这些示例中的语法都不适合我。 我的结论是,在干预版本中发生了一些变化,但我可能是错的;我以前从未使用过 EF,而且由于我基本上无法在其中工作,因此我认为这里有人可能能够指出有经验的眼睛可能是一个明显的错误。

首先,我有一个上下文类:

class DatabaseContext : DbContext
{
    public DbSet<Announcement> Announcements {get; set;}
}

我有第二个类,它试图使用该上下文从我的模型中获取数据。

public List<Announcement> AllAnnouncements {
    get{
        using (var db = new DatabaseContext())
        {
            var results = from a in db.Announcements select a;
            var records = results.ToList();
            return records;
        }
        return null;
    }
}

第一个问题:第二个块中的db.Announcements具有VS的红色波浪线错误线,悬停时,它显示Could not find an implementation of the query pattern for source type 'DbSet<Announcement>'. 'Select' not found.

这告诉我问题可能出在第一个块(我设置 Context 类的地方(,但如果是这样,我不知道它可能是什么;我在文档/示例中使用了语法,因此我不确定如果文档不正确,则正确。

第二个问题:我找到的所有示例都完全忽略了排序的主题,但我希望这些记录按最近的第一顺序排序(因此从SQL的角度来看,"AnnouncmentDateTime desc"(。 我注意到,如果我想包含 LINQ 字符串,似乎有一个orderby字符串在 LINQ 字符串中被识别,并且还有一个公认的 descending 关键字也存在。 但是不清楚把它放在哪里,如何标点它(如果有的话(,以及如何让查询运行(如果 DbSet 完全可查询,这第二点可能会自然解决,直到第一个问题得到解决我才会知道(。

我知道这是一个基本的问题,但是我能够找到的文档不起作用,并且SO上的问题清楚地表明其他人在自己的代码中已经超越了这一点,所以我一定做错了什么,这对于以前使用过EF的人来说是显而易见的。

提前感谢您给我的任何帮助。

实体框架 6:让简单的东西发挥作用

VS会将return null显示为无法访问的代码,因为在此之前您有一个返回语句。因此,只需删除返回空部分。

若要对记录进行排序,可以在 LINQ 语句中使用 orderby 关键字。

var results = from a in db.Announcements orderby a.AnnouncementDate descending select a;