【问题标题】:Do we not need to have a USING statment for LINQ to Entites in ASP.NET 5/EF7 anymore?我们不再需要在 ASP.NET 5/EF7 中为 LINQ to Entities 使用 USING 语句了吗?
【发布时间】: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


【解决方案1】:

正如 Gert Arnold 在 cmets 中所解释的,ASP.Net Core 现在拥有自己的 DI 框架,可与 EF Core 一起使用。使用 DI,旧方法不起作用,您只需使用 DI 创建一个实例并直接调用该实例,如the documents.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多