【发布时间】:2016-04-20 10:52:13
【问题描述】:
当我在我的 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 没有获取任何表名。因此,我查阅了有关在 Entity Framework 7 中进行查询的 MS 教程,并找到了 this page。令我惊讶的是,他们并没有创建上下文的新实例,但他们看起来正在使用依赖注入来完成所有工作,而且他们根本没有调用 USING 语句。
那么我们是否不需要再这样做了,DI 现在只需为我们处理所有事情吗?
【问题讨论】:
-
So do we not need to do a that anymore and DI just takes care of everything for us now?差不多,是的。 -
这并不新鲜。大多数 DI 提供者始终能够管理对象生命周期。不同之处在于现在有一个现成的提供程序 (Microsoft.Framework.DependencyInjection)。
-
@GertArnold 我实际上从未使用过 DI,所以我不知道。如果你或德鲁肯尼迪想写一些关于这个的简介作为答案,我会接受。我相信这可能会让其他一些从 .Net 4 迁移到 .Net 5 的 Jr. 程序员感到困惑,他们之前也没有使用过 DI。
标签: linq asp.net-core asp.net-core-mvc entity-framework-core