ASP.NET 5/EF7 中的 LINQ to Entities 是否不再需要 USING 语句?
Do we not need to have a USING statment for LINQ to Entites in ASP.NET 5/EF7 anymore?
当我在我的 ASP.Net 4.6 项目中使用 Entity Framework 6 时,我会像这样构建一个 LINQ to Entities 查询
using (var db = new ForumContext())
{
var model = db.yaf_Message
.Where(yt => yt.yaf_Topic.ForumID == 2 && yt.ReplyTo == null)
.Include("yaf_Topic")
.OrderByDescending(yt => yt.yaf_Topic.Posted)
.Select(yt => new NewsVM()
{
PostedBy = yt.yaf_Topic.UserDisplayName,
RawDatePosted = yt.yaf_Topic.Posted,
RawSubject = yt.Message,
Title = yt.yaf_Topic.Topic,
TopicID = yt.TopicID
}).ToList();
return View(model);
}
我现在在使用 Entity Framework 7 的 ASP.Net 5 (MVC 6) 应用程序中工作,令我惊讶的是,当我开始在我的 using 语句中写出 LINQ 时,Intellisense 没有接受任何 table 个名字。所以我打开了一个关于在 Entity Framework 7 中进行查询的 MS 教程,并找到了 this page。令我惊讶的是,他们没有创建上下文的新实例,但他们看起来正在使用依赖注入来完成所有工作,而且他们根本没有调用 USING
语句。
所以我们不需要再做那个了,现在 DI 会为我们搞定一切吗?
正如 Gert Arnold 在评论中所解释的那样 ASP.Net Core 现在拥有自己的 DI 框架,可与 EF Core 一起使用。使用 DI 时,旧方法不起作用,您只需使用 DI 创建一个实例并直接调用它,如 the documents.
中所示
当我在我的 ASP.Net 4.6 项目中使用 Entity Framework 6 时,我会像这样构建一个 LINQ to Entities 查询
using (var db = new ForumContext())
{
var model = db.yaf_Message
.Where(yt => yt.yaf_Topic.ForumID == 2 && yt.ReplyTo == null)
.Include("yaf_Topic")
.OrderByDescending(yt => yt.yaf_Topic.Posted)
.Select(yt => new NewsVM()
{
PostedBy = yt.yaf_Topic.UserDisplayName,
RawDatePosted = yt.yaf_Topic.Posted,
RawSubject = yt.Message,
Title = yt.yaf_Topic.Topic,
TopicID = yt.TopicID
}).ToList();
return View(model);
}
我现在在使用 Entity Framework 7 的 ASP.Net 5 (MVC 6) 应用程序中工作,令我惊讶的是,当我开始在我的 using 语句中写出 LINQ 时,Intellisense 没有接受任何 table 个名字。所以我打开了一个关于在 Entity Framework 7 中进行查询的 MS 教程,并找到了 this page。令我惊讶的是,他们没有创建上下文的新实例,但他们看起来正在使用依赖注入来完成所有工作,而且他们根本没有调用 USING
语句。
所以我们不需要再做那个了,现在 DI 会为我们搞定一切吗?
正如 Gert Arnold 在评论中所解释的那样 ASP.Net Core 现在拥有自己的 DI 框架,可与 EF Core 一起使用。使用 DI 时,旧方法不起作用,您只需使用 DI 创建一个实例并直接调用它,如 the documents.
中所示