当前位置:  开发笔记 > 编程语言 > 正文

.NET - Microsoft.Data.Entity中是否有DbSet Find方法?

如何解决《.NET-Microsoft.Data.Entity中是否有DbSetFind方法?》经验,为你挑选了1个好方法。

我正在使用ASP.NET MVC 5创建一个MVC应用程序,它使用Entity Framework来处理数据库.

这是一个简单的应用程序,具有CRUD功能,可以将项目添加到带有数据库的列表中.我可以创建项目并保存到数据库,现在我想查看特定项目的页面.

我在以前的应用程序中使用对象Find上的方法完成了这个DbSet,但该方法是其中的一部分System.Data.Entity.我能够以这种方式创建应用程序,但是使用ASP.NET 5,看起来我需要以不同方式配置数据库连接,使用以下行Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext(options =>
            options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

        services.AddMvc();
    }

这要求我使用Microsoft.Data.Entity而不是System.Data.Entity.

这是MyDbContext班级:

public class MyDbContext : DbContext
{

    public virtual DbSet TestModels { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        options.UseSqlServer(@"Server=(localdb)\MSSQLLocalDB;Database=EmptyMVCAuthentication01;integrated security=True;");
    }
}

我希望该操作能够查看特定页面以执行以下操作:

    public IActionResult Details(int id)
    {
        Course course= db.Courses.Find(id);
        return View(course);
    }

(db上面是私人实例MyDbContext)

但是,没有Find方法Microsoft.Data.Entity.关于我可以从哪里去的任何建议?



1> Shyju..:

Find()新版本的Entity框架(截至今天的EF 7)中不存在方法.根据github 问题页面,他们将这个添加到他们的待办事项中,因为很多人都在请求FindFindAsync方法.所以这可能会在未来的版本中提供.

目前,您可以FirstOrDefault()根据需要使用,

public IActionResult Details(int id)
{
    var course= db.Courses.FirstOrDefault(d=>d.Id==id);
    if(course==null)
    {
      return View("NotFound");
    }
    return View(course);
}

假设Id是您Course模型的主键.

有一些解决方法,比如写这里描述的扩展方法.但我更喜欢FirstOrDefault()或者FirstOrDefaultAsync() 因为他们给了我想要的东西.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有